Extension [ <persistent> extension #86 ion version 0.2.1 ] {

  - Dependencies {
    Dependency [ date (Required) ]
    Dependency [ spl (Required) ]
  }

  - Functions {
    Function [ <internal:ion> function ion\serialize ] {

      - Parameters [2] {
        Parameter #0 [ <required> mixed $data ]
        Parameter #1 [ <optional> ion\Serializer|array|null $serializer = null ]
      }
      - Return [ string ]
    }
    Function [ <internal:ion> function ion\unserialize ] {

      - Parameters [2] {
        Parameter #0 [ <required> $data ]
        Parameter #1 [ <optional> ion\Unserializer|array|null $unserializer = null ]
      }
      - Return [ mixed ]
    }
  }

  - Classes [34] {
    Class [ <internal:ion> class ion\Catalog implements Countable ] {

      - Constants [0] {
      }

      - Static properties [0] {
      }

      - Static methods [0] {
      }

      - Properties [1] {
        Property [ private array $symbolTables = [] ]
      }

      - Methods [6] {
        Method [ <internal:ion, ctor> public method __construct ] {

          - Parameters [0] {
          }
        }

        Method [ <internal:ion, prototype Countable> public method count ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion> public method add ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Symbol\Table $table ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion> public method remove ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Symbol\Table|string $table ]
          }
          - Return [ bool ]
        }

        Method [ <internal:ion> public method find ] {

          - Parameters [2] {
            Parameter #0 [ <required> string $name ]
            Parameter #1 [ <optional> int $version = 0 ]
          }
          - Return [ ?ion\Symbol\Table ]
        }

        Method [ <internal:ion> public method findBest ] {

          - Parameters [2] {
            Parameter #0 [ <required> string $name ]
            Parameter #1 [ <optional> int $version = 0 ]
          }
          - Return [ ?ion\Symbol\Table ]
        }
      }
    }

    Class [ <internal:ion> class ion\Decimal implements Stringable ] {

      - Constants [0] {
      }

      - Static properties [0] {
      }

      - Static methods [0] {
      }

      - Properties [2] {
        Property [ public readonly string|int $number ]
        Property [ public readonly ?ion\Decimal\Context $context ]
      }

      - Methods [6] {
        Method [ <internal:ion, ctor> public method __construct ] {

          - Parameters [2] {
            Parameter #0 [ <required> string|int $number ]
            Parameter #1 [ <optional> ?ion\Decimal\Context $context = null ]
          }
        }

        Method [ <internal:ion> public method equals ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Decimal $decimal ]
          }
          - Return [ bool ]
        }

        Method [ <internal:ion> public method isInt ] {

          - Parameters [0] {
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, prototype Stringable> public method __toString ] {

          - Parameters [0] {
          }
          - Return [ string ]
        }

        Method [ <internal:ion> public method toString ] {

          - Parameters [0] {
          }
          - Return [ string ]
        }

        Method [ <internal:ion> public method toInt ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }
      }
    }

    Class [ <internal:ion> class ion\Decimal\Context ] {

      - Constants [0] {
      }

      - Static properties [0] {
      }

      - Static methods [4] {
        Method [ <internal:ion> static public method Dec32 ] {

          - Parameters [0] {
          }
          - Return [ ion\Decimal\Context ]
        }

        Method [ <internal:ion> static public method Dec64 ] {

          - Parameters [0] {
          }
          - Return [ ion\Decimal\Context ]
        }

        Method [ <internal:ion> static public method Dec128 ] {

          - Parameters [0] {
          }
          - Return [ ion\Decimal\Context ]
        }

        Method [ <internal:ion> static public method DecMax ] {

          - Parameters [1] {
            Parameter #0 [ <optional> ion\Decimal\Context\Rounding|int $round = ion\Decimal\Context\Rounding::HalfEven ]
          }
          - Return [ ion\Decimal\Context ]
        }
      }

      - Properties [5] {
        Property [ public readonly int $digits ]
        Property [ public readonly int $eMax ]
        Property [ public readonly int $eMin ]
        Property [ public readonly ion\Decimal\Context\Rounding|int $round ]
        Property [ public readonly bool $clamp ]
      }

      - Methods [1] {
        Method [ <internal:ion, ctor> public method __construct ] {

          - Parameters [5] {
            Parameter #0 [ <required> int $digits ]
            Parameter #1 [ <required> int $eMax ]
            Parameter #2 [ <required> int $eMin ]
            Parameter #3 [ <required> ion\Decimal\Context\Rounding|int $round ]
            Parameter #4 [ <required> bool $clamp ]
          }
        }
      }
    }

    Class [ <internal:ion> class ion\Decimal\Context\Rounding implements BackedEnum, UnitEnum ] {

      - Constants [8] {
        Constant [ public ion\Decimal\Context\Rounding Ceiling ] { Object }
        Constant [ public ion\Decimal\Context\Rounding Up ] { Object }
        Constant [ public ion\Decimal\Context\Rounding HalfUp ] { Object }
        Constant [ public ion\Decimal\Context\Rounding HalfEven ] { Object }
        Constant [ public ion\Decimal\Context\Rounding HalfDown ] { Object }
        Constant [ public ion\Decimal\Context\Rounding Down ] { Object }
        Constant [ public ion\Decimal\Context\Rounding Floor ] { Object }
        Constant [ public ion\Decimal\Context\Rounding Down05Up ] { Object }
      }

      - Static properties [0] {
      }

      - Static methods [3] {
        Method [ <internal:ion, prototype UnitEnum> static public method cases ] {

          - Parameters [0] {
          }
          - Return [ array ]
        }

        Method [ <internal:ion, prototype BackedEnum> static public method from ] {

          - Parameters [1] {
            Parameter #0 [ <required> string|int $value ]
          }
          - Return [ static ]
        }

        Method [ <internal:ion, prototype BackedEnum> static public method tryFrom ] {

          - Parameters [1] {
            Parameter #0 [ <required> string|int $value ]
          }
          - Return [ ?static ]
        }
      }

      - Properties [2] {
        Property [ public readonly string $name ]
        Property [ public readonly int $value ]
      }

      - Methods [0] {
      }
    }

    Class [ <internal:ion> class ion\Exception extends Exception implements Throwable, Stringable ] {

      - Constants [0] {
      }

      - Static properties [0] {
      }

      - Static methods [0] {
      }

      - Properties [4] {
        Property [ protected $message = '' ]
        Property [ protected $code = 0 ]
        Property [ protected string $file = '' ]
        Property [ protected int $line = 0 ]
      }

      - Methods [10] {
        Method [ <internal:Core, inherits Exception, ctor> public method __construct ] {

          - Parameters [3] {
            Parameter #0 [ <optional> string $message = "" ]
            Parameter #1 [ <optional> int $code = 0 ]
            Parameter #2 [ <optional> ?Throwable $previous = null ]
          }
        }

        Method [ <internal:Core, inherits Exception> public method __wakeup ] {

          - Parameters [0] {
          }
          - Tentative return [ void ]
        }

        Method [ <internal:Core, inherits Exception, prototype Throwable> final public method getMessage ] {

          - Parameters [0] {
          }
          - Return [ string ]
        }

        Method [ <internal:Core, inherits Exception, prototype Throwable> final public method getCode ] {

          - Parameters [0] {
          }
        }

        Method [ <internal:Core, inherits Exception, prototype Throwable> final public method getFile ] {

          - Parameters [0] {
          }
          - Return [ string ]
        }

        Method [ <internal:Core, inherits Exception, prototype Throwable> final public method getLine ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:Core, inherits Exception, prototype Throwable> final public method getTrace ] {

          - Parameters [0] {
          }
          - Return [ array ]
        }

        Method [ <internal:Core, inherits Exception, prototype Throwable> final public method getPrevious ] {

          - Parameters [0] {
          }
          - Return [ ?Throwable ]
        }

        Method [ <internal:Core, inherits Exception, prototype Throwable> final public method getTraceAsString ] {

          - Parameters [0] {
          }
          - Return [ string ]
        }

        Method [ <internal:Core, inherits Exception, prototype Stringable> public method __toString ] {

          - Parameters [0] {
          }
          - Return [ string ]
        }
      }
    }

    Class [ <internal:ion> class ion\LOB ] {

      - Constants [0] {
      }

      - Static properties [0] {
      }

      - Static methods [0] {
      }

      - Properties [2] {
        Property [ public readonly string $value ]
        Property [ public readonly ion\Type $type ]
      }

      - Methods [1] {
        Method [ <internal:ion, ctor> public method __construct ] {

          - Parameters [2] {
            Parameter #0 [ <required> string $value ]
            Parameter #1 [ <optional> ion\Type $type = ion\Type::CLob ]
          }
        }
      }
    }

    Interface [ <internal:ion> interface ion\Reader extends RecursiveIterator, Traversable, Iterator ] {

      - Constants [0] {
      }

      - Static properties [0] {
      }

      - Static methods [0] {
      }

      - Properties [0] {
      }

      - Methods [35] {
        Method [ <internal:ion> abstract public method getType ] {

          - Parameters [0] {
          }
          - Return [ ion\Type ]
        }

        Method [ <internal:ion> abstract public method hasAnnotations ] {

          - Parameters [0] {
          }
          - Return [ bool ]
        }

        Method [ <internal:ion> abstract public method hasAnnotation ] {

          - Parameters [1] {
            Parameter #0 [ <required> string $annotation ]
          }
          - Return [ bool ]
        }

        Method [ <internal:ion> abstract public method isNull ] {

          - Parameters [0] {
          }
          - Return [ bool ]
        }

        Method [ <internal:ion> abstract public method isInStruct ] {

          - Parameters [0] {
          }
          - Return [ bool ]
        }

        Method [ <internal:ion> abstract public method getFieldName ] {

          - Parameters [0] {
          }
          - Return [ string ]
        }

        Method [ <internal:ion> abstract public method getFieldNameSymbol ] {

          - Parameters [0] {
          }
          - Return [ ion\Symbol ]
        }

        Method [ <internal:ion> abstract public method getAnnotations ] {

          - Parameters [0] {
          }
          - Return [ array ]
        }

        Method [ <internal:ion> abstract public method getAnnotationSymbols ] {

          - Parameters [0] {
          }
          - Return [ array ]
        }

        Method [ <internal:ion> abstract public method countAnnotations ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion> abstract public method getAnnotation ] {

          - Parameters [1] {
            Parameter #0 [ <required> int $index ]
          }
          - Return [ string ]
        }

        Method [ <internal:ion> abstract public method getAnnotationSymbol ] {

          - Parameters [1] {
            Parameter #0 [ <required> int $index ]
          }
          - Return [ ion\Symbol ]
        }

        Method [ <internal:ion> abstract public method readNull ] {

          - Parameters [0] {
          }
          - Return [ ion\Type ]
        }

        Method [ <internal:ion> abstract public method readBool ] {

          - Parameters [0] {
          }
          - Return [ bool ]
        }

        Method [ <internal:ion> abstract public method readInt ] {

          - Parameters [0] {
          }
          - Return [ string|int ]
        }

        Method [ <internal:ion> abstract public method readFloat ] {

          - Parameters [0] {
          }
          - Return [ float ]
        }

        Method [ <internal:ion> abstract public method readDecimal ] {

          - Parameters [0] {
          }
          - Return [ ion\Decimal ]
        }

        Method [ <internal:ion> abstract public method readTimestamp ] {

          - Parameters [0] {
          }
          - Return [ ion\Timestamp ]
        }

        Method [ <internal:ion> abstract public method readSymbol ] {

          - Parameters [0] {
          }
          - Return [ ion\Symbol ]
        }

        Method [ <internal:ion> abstract public method readString ] {

          - Parameters [0] {
          }
          - Return [ string ]
        }

        Method [ <internal:ion> abstract public method readStringPart ] {

          - Parameters [2] {
            Parameter #0 [ <required> &$string ]
            Parameter #1 [ <optional> int $length = 0x1000 ]
          }
          - Return [ bool ]
        }

        Method [ <internal:ion> abstract public method readLob ] {

          - Parameters [0] {
          }
          - Return [ string ]
        }

        Method [ <internal:ion> abstract public method readLobPart ] {

          - Parameters [2] {
            Parameter #0 [ <required> &$string ]
            Parameter #1 [ <optional> int $length = 0x1000 ]
          }
          - Return [ bool ]
        }

        Method [ <internal:ion> abstract public method getPosition ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion> abstract public method getDepth ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion> abstract public method seek ] {

          - Parameters [2] {
            Parameter #0 [ <required> int $offset ]
            Parameter #1 [ <optional> int $length = -1 ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion> abstract public method getValueOffset ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion> abstract public method getValueLength ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:SPL, inherits RecursiveIterator> abstract public method hasChildren ] {

          - Parameters [0] {
          }
          - Tentative return [ bool ]
        }

        Method [ <internal:SPL, inherits RecursiveIterator> abstract public method getChildren ] {

          - Parameters [0] {
          }
          - Tentative return [ ?RecursiveIterator ]
        }

        Method [ <internal:Core, inherits Iterator> abstract public method current ] {

          - Parameters [0] {
          }
          - Tentative return [ mixed ]
        }

        Method [ <internal:Core, inherits Iterator> abstract public method next ] {

          - Parameters [0] {
          }
          - Tentative return [ void ]
        }

        Method [ <internal:Core, inherits Iterator> abstract public method key ] {

          - Parameters [0] {
          }
          - Tentative return [ mixed ]
        }

        Method [ <internal:Core, inherits Iterator> abstract public method valid ] {

          - Parameters [0] {
          }
          - Tentative return [ bool ]
        }

        Method [ <internal:Core, inherits Iterator> abstract public method rewind ] {

          - Parameters [0] {
          }
          - Tentative return [ void ]
        }
      }
    }

    Class [ <internal:ion> <iterateable> abstract class ion\Reader\Reader implements ion\Reader, Iterator, Traversable, RecursiveIterator ] {

      - Constants [0] {
      }

      - Static properties [0] {
      }

      - Static methods [0] {
      }

      - Properties [9] {
        Property [ public readonly ?ion\Catalog $catalog ]
        Property [ public readonly ?ion\Decimal\Context $decimalContext ]
        Property [ public readonly ?Closure $onContextChange ]
        Property [ public readonly bool $returnSystemValues ]
        Property [ public readonly int $maxContainerDepth ]
        Property [ public readonly int $maxAnnotations ]
        Property [ public readonly int $annotationBufferSize ]
        Property [ public readonly int $tempBufferSize ]
        Property [ public readonly bool $skipCharacterValidation ]
      }

      - Methods [36] {
        Method [ <internal:ion, ctor> public method __construct ] {

          - Parameters [10] {
            Parameter #0 [ <required> $data ]
            Parameter #1 [ <optional> ?ion\Catalog $catalog = null ]
            Parameter #2 [ <optional> ?ion\Decimal\Context $decimalContext = null ]
            Parameter #3 [ <optional> ?Closure $onContextChange = null ]
            Parameter #4 [ <optional> bool $returnSystemValues = false ]
            Parameter #5 [ <optional> int $maxContainerDepth = 10 ]
            Parameter #6 [ <optional> int $maxAnnotations = 10 ]
            Parameter #7 [ <optional> int $annotationBufferSize = 0x4000 ]
            Parameter #8 [ <optional> int $tempBufferSize = 0x4000 ]
            Parameter #9 [ <optional> bool $skipCharacterValidation = false ]
          }
        }

        Method [ <internal:ion, prototype RecursiveIterator> public method hasChildren ] {

          - Parameters [0] {
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, prototype RecursiveIterator> public method getChildren ] {

          - Parameters [0] {
          }
          - Return [ ion\Reader ]
        }

        Method [ <internal:ion, prototype Iterator> public method rewind ] {

          - Parameters [0] {
          }
          - Return [ void ]
        }

        Method [ <internal:ion, prototype Iterator> public method next ] {

          - Parameters [0] {
          }
          - Return [ void ]
        }

        Method [ <internal:ion, prototype Iterator> public method valid ] {

          - Parameters [0] {
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, prototype Iterator> public method key ] {

          - Parameters [0] {
          }
          - Return [ mixed ]
        }

        Method [ <internal:ion, prototype Iterator> public method current ] {

          - Parameters [0] {
          }
          - Return [ mixed ]
        }

        Method [ <internal:ion, prototype ion\Reader> public method getType ] {

          - Parameters [0] {
          }
          - Return [ ion\Type ]
        }

        Method [ <internal:ion, prototype ion\Reader> public method hasAnnotations ] {

          - Parameters [0] {
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, prototype ion\Reader> public method hasAnnotation ] {

          - Parameters [1] {
            Parameter #0 [ <required> string $annotation ]
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, prototype ion\Reader> public method isNull ] {

          - Parameters [0] {
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, prototype ion\Reader> public method isInStruct ] {

          - Parameters [0] {
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, prototype ion\Reader> public method getFieldName ] {

          - Parameters [0] {
          }
          - Return [ string ]
        }

        Method [ <internal:ion, prototype ion\Reader> public method getFieldNameSymbol ] {

          - Parameters [0] {
          }
          - Return [ ion\Symbol ]
        }

        Method [ <internal:ion, prototype ion\Reader> public method getAnnotations ] {

          - Parameters [0] {
          }
          - Return [ array ]
        }

        Method [ <internal:ion, prototype ion\Reader> public method getAnnotationSymbols ] {

          - Parameters [0] {
          }
          - Return [ array ]
        }

        Method [ <internal:ion, prototype ion\Reader> public method countAnnotations ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion, prototype ion\Reader> public method getAnnotation ] {

          - Parameters [1] {
            Parameter #0 [ <required> int $index ]
          }
          - Return [ string ]
        }

        Method [ <internal:ion, prototype ion\Reader> public method getAnnotationSymbol ] {

          - Parameters [1] {
            Parameter #0 [ <required> int $index ]
          }
          - Return [ ion\Symbol ]
        }

        Method [ <internal:ion, prototype ion\Reader> public method readNull ] {

          - Parameters [0] {
          }
          - Return [ ion\Type ]
        }

        Method [ <internal:ion, prototype ion\Reader> public method readBool ] {

          - Parameters [0] {
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, prototype ion\Reader> public method readInt ] {

          - Parameters [0] {
          }
          - Return [ string|int ]
        }

        Method [ <internal:ion, prototype ion\Reader> public method readFloat ] {

          - Parameters [0] {
          }
          - Return [ float ]
        }

        Method [ <internal:ion, prototype ion\Reader> public method readDecimal ] {

          - Parameters [0] {
          }
          - Return [ ion\Decimal ]
        }

        Method [ <internal:ion, prototype ion\Reader> public method readTimestamp ] {

          - Parameters [0] {
          }
          - Return [ ion\Timestamp ]
        }

        Method [ <internal:ion, prototype ion\Reader> public method readSymbol ] {

          - Parameters [0] {
          }
          - Return [ ion\Symbol ]
        }

        Method [ <internal:ion, prototype ion\Reader> public method readString ] {

          - Parameters [0] {
          }
          - Return [ string ]
        }

        Method [ <internal:ion, prototype ion\Reader> public method readStringPart ] {

          - Parameters [2] {
            Parameter #0 [ <required> &$string ]
            Parameter #1 [ <optional> int $length = 0x1000 ]
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, prototype ion\Reader> public method readLob ] {

          - Parameters [0] {
          }
          - Return [ string ]
        }

        Method [ <internal:ion, prototype ion\Reader> public method readLobPart ] {

          - Parameters [2] {
            Parameter #0 [ <required> &$string ]
            Parameter #1 [ <optional> int $length = 0x1000 ]
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, prototype ion\Reader> public method getPosition ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion, prototype ion\Reader> public method getDepth ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion, prototype ion\Reader> public method seek ] {

          - Parameters [2] {
            Parameter #0 [ <required> int $offset ]
            Parameter #1 [ <optional> int $length = -1 ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, prototype ion\Reader> public method getValueOffset ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion, prototype ion\Reader> public method getValueLength ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }
      }
    }

    Interface [ <internal:ion> interface ion\Reader\Buffer extends ion\Reader, Iterator, Traversable, RecursiveIterator ] {

      - Constants [0] {
      }

      - Static properties [0] {
      }

      - Static methods [0] {
      }

      - Properties [0] {
      }

      - Methods [36] {
        Method [ <internal:ion> abstract public method getBuffer ] {

          - Parameters [0] {
          }
          - Return [ string ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method getType ] {

          - Parameters [0] {
          }
          - Return [ ion\Type ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method hasAnnotations ] {

          - Parameters [0] {
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method hasAnnotation ] {

          - Parameters [1] {
            Parameter #0 [ <required> string $annotation ]
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method isNull ] {

          - Parameters [0] {
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method isInStruct ] {

          - Parameters [0] {
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method getFieldName ] {

          - Parameters [0] {
          }
          - Return [ string ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method getFieldNameSymbol ] {

          - Parameters [0] {
          }
          - Return [ ion\Symbol ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method getAnnotations ] {

          - Parameters [0] {
          }
          - Return [ array ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method getAnnotationSymbols ] {

          - Parameters [0] {
          }
          - Return [ array ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method countAnnotations ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method getAnnotation ] {

          - Parameters [1] {
            Parameter #0 [ <required> int $index ]
          }
          - Return [ string ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method getAnnotationSymbol ] {

          - Parameters [1] {
            Parameter #0 [ <required> int $index ]
          }
          - Return [ ion\Symbol ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method readNull ] {

          - Parameters [0] {
          }
          - Return [ ion\Type ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method readBool ] {

          - Parameters [0] {
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method readInt ] {

          - Parameters [0] {
          }
          - Return [ string|int ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method readFloat ] {

          - Parameters [0] {
          }
          - Return [ float ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method readDecimal ] {

          - Parameters [0] {
          }
          - Return [ ion\Decimal ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method readTimestamp ] {

          - Parameters [0] {
          }
          - Return [ ion\Timestamp ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method readSymbol ] {

          - Parameters [0] {
          }
          - Return [ ion\Symbol ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method readString ] {

          - Parameters [0] {
          }
          - Return [ string ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method readStringPart ] {

          - Parameters [2] {
            Parameter #0 [ <required> &$string ]
            Parameter #1 [ <optional> int $length = 0x1000 ]
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method readLob ] {

          - Parameters [0] {
          }
          - Return [ string ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method readLobPart ] {

          - Parameters [2] {
            Parameter #0 [ <required> &$string ]
            Parameter #1 [ <optional> int $length = 0x1000 ]
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method getPosition ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method getDepth ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method seek ] {

          - Parameters [2] {
            Parameter #0 [ <required> int $offset ]
            Parameter #1 [ <optional> int $length = -1 ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method getValueOffset ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method getValueLength ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:SPL, inherits RecursiveIterator> abstract public method hasChildren ] {

          - Parameters [0] {
          }
          - Tentative return [ bool ]
        }

        Method [ <internal:SPL, inherits RecursiveIterator> abstract public method getChildren ] {

          - Parameters [0] {
          }
          - Tentative return [ ?RecursiveIterator ]
        }

        Method [ <internal:Core, inherits Iterator> abstract public method current ] {

          - Parameters [0] {
          }
          - Tentative return [ mixed ]
        }

        Method [ <internal:Core, inherits Iterator> abstract public method next ] {

          - Parameters [0] {
          }
          - Tentative return [ void ]
        }

        Method [ <internal:Core, inherits Iterator> abstract public method key ] {

          - Parameters [0] {
          }
          - Tentative return [ mixed ]
        }

        Method [ <internal:Core, inherits Iterator> abstract public method valid ] {

          - Parameters [0] {
          }
          - Tentative return [ bool ]
        }

        Method [ <internal:Core, inherits Iterator> abstract public method rewind ] {

          - Parameters [0] {
          }
          - Tentative return [ void ]
        }
      }
    }

    Class [ <internal:ion> <iterateable> class ion\Reader\Buffer\Reader extends ion\Reader\Reader implements RecursiveIterator, Traversable, Iterator, ion\Reader, ion\Reader\Buffer ] {

      - Constants [0] {
      }

      - Static properties [0] {
      }

      - Static methods [0] {
      }

      - Properties [9] {
        Property [ public readonly ?ion\Catalog $catalog ]
        Property [ public readonly ?ion\Decimal\Context $decimalContext ]
        Property [ public readonly ?Closure $onContextChange ]
        Property [ public readonly bool $returnSystemValues ]
        Property [ public readonly int $maxContainerDepth ]
        Property [ public readonly int $maxAnnotations ]
        Property [ public readonly int $annotationBufferSize ]
        Property [ public readonly int $tempBufferSize ]
        Property [ public readonly bool $skipCharacterValidation ]
      }

      - Methods [37] {
        Method [ <internal:ion, prototype ion\Reader\Buffer> public method getBuffer ] {

          - Parameters [0] {
          }
          - Return [ string ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, ctor> public method __construct ] {

          - Parameters [10] {
            Parameter #0 [ <required> $data ]
            Parameter #1 [ <optional> ?ion\Catalog $catalog = null ]
            Parameter #2 [ <optional> ?ion\Decimal\Context $decimalContext = null ]
            Parameter #3 [ <optional> ?Closure $onContextChange = null ]
            Parameter #4 [ <optional> bool $returnSystemValues = false ]
            Parameter #5 [ <optional> int $maxContainerDepth = 10 ]
            Parameter #6 [ <optional> int $maxAnnotations = 10 ]
            Parameter #7 [ <optional> int $annotationBufferSize = 0x4000 ]
            Parameter #8 [ <optional> int $tempBufferSize = 0x4000 ]
            Parameter #9 [ <optional> bool $skipCharacterValidation = false ]
          }
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype RecursiveIterator> public method hasChildren ] {

          - Parameters [0] {
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype RecursiveIterator> public method getChildren ] {

          - Parameters [0] {
          }
          - Return [ ion\Reader ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype Iterator> public method rewind ] {

          - Parameters [0] {
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype Iterator> public method next ] {

          - Parameters [0] {
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype Iterator> public method valid ] {

          - Parameters [0] {
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype Iterator> public method key ] {

          - Parameters [0] {
          }
          - Return [ mixed ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype Iterator> public method current ] {

          - Parameters [0] {
          }
          - Return [ mixed ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method getType ] {

          - Parameters [0] {
          }
          - Return [ ion\Type ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method hasAnnotations ] {

          - Parameters [0] {
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method hasAnnotation ] {

          - Parameters [1] {
            Parameter #0 [ <required> string $annotation ]
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method isNull ] {

          - Parameters [0] {
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method isInStruct ] {

          - Parameters [0] {
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method getFieldName ] {

          - Parameters [0] {
          }
          - Return [ string ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method getFieldNameSymbol ] {

          - Parameters [0] {
          }
          - Return [ ion\Symbol ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method getAnnotations ] {

          - Parameters [0] {
          }
          - Return [ array ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method getAnnotationSymbols ] {

          - Parameters [0] {
          }
          - Return [ array ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method countAnnotations ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method getAnnotation ] {

          - Parameters [1] {
            Parameter #0 [ <required> int $index ]
          }
          - Return [ string ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method getAnnotationSymbol ] {

          - Parameters [1] {
            Parameter #0 [ <required> int $index ]
          }
          - Return [ ion\Symbol ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method readNull ] {

          - Parameters [0] {
          }
          - Return [ ion\Type ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method readBool ] {

          - Parameters [0] {
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method readInt ] {

          - Parameters [0] {
          }
          - Return [ string|int ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method readFloat ] {

          - Parameters [0] {
          }
          - Return [ float ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method readDecimal ] {

          - Parameters [0] {
          }
          - Return [ ion\Decimal ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method readTimestamp ] {

          - Parameters [0] {
          }
          - Return [ ion\Timestamp ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method readSymbol ] {

          - Parameters [0] {
          }
          - Return [ ion\Symbol ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method readString ] {

          - Parameters [0] {
          }
          - Return [ string ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method readStringPart ] {

          - Parameters [2] {
            Parameter #0 [ <required> &$string ]
            Parameter #1 [ <optional> int $length = 0x1000 ]
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method readLob ] {

          - Parameters [0] {
          }
          - Return [ string ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method readLobPart ] {

          - Parameters [2] {
            Parameter #0 [ <required> &$string ]
            Parameter #1 [ <optional> int $length = 0x1000 ]
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method getPosition ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method getDepth ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method seek ] {

          - Parameters [2] {
            Parameter #0 [ <required> int $offset ]
            Parameter #1 [ <optional> int $length = -1 ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method getValueOffset ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method getValueLength ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }
      }
    }

    Interface [ <internal:ion> interface ion\Reader\Stream extends ion\Reader, Iterator, Traversable, RecursiveIterator ] {

      - Constants [0] {
      }

      - Static properties [0] {
      }

      - Static methods [0] {
      }

      - Properties [0] {
      }

      - Methods [38] {
        Method [ <internal:ion> abstract public method getStream ] {

          - Parameters [0] {
          }
        }

        Method [ <internal:ion> abstract public method resetStream ] {

          - Parameters [1] {
            Parameter #0 [ <required> $stream ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion> abstract public method resetStreamWithLength ] {

          - Parameters [2] {
            Parameter #0 [ <required> $stream ]
            Parameter #1 [ <required> int $length ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method getType ] {

          - Parameters [0] {
          }
          - Return [ ion\Type ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method hasAnnotations ] {

          - Parameters [0] {
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method hasAnnotation ] {

          - Parameters [1] {
            Parameter #0 [ <required> string $annotation ]
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method isNull ] {

          - Parameters [0] {
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method isInStruct ] {

          - Parameters [0] {
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method getFieldName ] {

          - Parameters [0] {
          }
          - Return [ string ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method getFieldNameSymbol ] {

          - Parameters [0] {
          }
          - Return [ ion\Symbol ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method getAnnotations ] {

          - Parameters [0] {
          }
          - Return [ array ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method getAnnotationSymbols ] {

          - Parameters [0] {
          }
          - Return [ array ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method countAnnotations ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method getAnnotation ] {

          - Parameters [1] {
            Parameter #0 [ <required> int $index ]
          }
          - Return [ string ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method getAnnotationSymbol ] {

          - Parameters [1] {
            Parameter #0 [ <required> int $index ]
          }
          - Return [ ion\Symbol ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method readNull ] {

          - Parameters [0] {
          }
          - Return [ ion\Type ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method readBool ] {

          - Parameters [0] {
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method readInt ] {

          - Parameters [0] {
          }
          - Return [ string|int ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method readFloat ] {

          - Parameters [0] {
          }
          - Return [ float ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method readDecimal ] {

          - Parameters [0] {
          }
          - Return [ ion\Decimal ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method readTimestamp ] {

          - Parameters [0] {
          }
          - Return [ ion\Timestamp ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method readSymbol ] {

          - Parameters [0] {
          }
          - Return [ ion\Symbol ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method readString ] {

          - Parameters [0] {
          }
          - Return [ string ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method readStringPart ] {

          - Parameters [2] {
            Parameter #0 [ <required> &$string ]
            Parameter #1 [ <optional> int $length = 0x1000 ]
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method readLob ] {

          - Parameters [0] {
          }
          - Return [ string ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method readLobPart ] {

          - Parameters [2] {
            Parameter #0 [ <required> &$string ]
            Parameter #1 [ <optional> int $length = 0x1000 ]
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method getPosition ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method getDepth ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method seek ] {

          - Parameters [2] {
            Parameter #0 [ <required> int $offset ]
            Parameter #1 [ <optional> int $length = -1 ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method getValueOffset ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion, inherits ion\Reader> abstract public method getValueLength ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:SPL, inherits RecursiveIterator> abstract public method hasChildren ] {

          - Parameters [0] {
          }
          - Tentative return [ bool ]
        }

        Method [ <internal:SPL, inherits RecursiveIterator> abstract public method getChildren ] {

          - Parameters [0] {
          }
          - Tentative return [ ?RecursiveIterator ]
        }

        Method [ <internal:Core, inherits Iterator> abstract public method current ] {

          - Parameters [0] {
          }
          - Tentative return [ mixed ]
        }

        Method [ <internal:Core, inherits Iterator> abstract public method next ] {

          - Parameters [0] {
          }
          - Tentative return [ void ]
        }

        Method [ <internal:Core, inherits Iterator> abstract public method key ] {

          - Parameters [0] {
          }
          - Tentative return [ mixed ]
        }

        Method [ <internal:Core, inherits Iterator> abstract public method valid ] {

          - Parameters [0] {
          }
          - Tentative return [ bool ]
        }

        Method [ <internal:Core, inherits Iterator> abstract public method rewind ] {

          - Parameters [0] {
          }
          - Tentative return [ void ]
        }
      }
    }

    Class [ <internal:ion> <iterateable> class ion\Reader\Stream\Reader extends ion\Reader\Reader implements RecursiveIterator, Traversable, Iterator, ion\Reader, ion\Reader\Stream ] {

      - Constants [0] {
      }

      - Static properties [0] {
      }

      - Static methods [0] {
      }

      - Properties [9] {
        Property [ public readonly ?ion\Catalog $catalog ]
        Property [ public readonly ?ion\Decimal\Context $decimalContext ]
        Property [ public readonly ?Closure $onContextChange ]
        Property [ public readonly bool $returnSystemValues ]
        Property [ public readonly int $maxContainerDepth ]
        Property [ public readonly int $maxAnnotations ]
        Property [ public readonly int $annotationBufferSize ]
        Property [ public readonly int $tempBufferSize ]
        Property [ public readonly bool $skipCharacterValidation ]
      }

      - Methods [39] {
        Method [ <internal:ion, prototype ion\Reader\Stream> public method getStream ] {

          - Parameters [0] {
          }
        }

        Method [ <internal:ion, prototype ion\Reader\Stream> public method resetStream ] {

          - Parameters [1] {
            Parameter #0 [ <required> $stream ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, prototype ion\Reader\Stream> public method resetStreamWithLength ] {

          - Parameters [2] {
            Parameter #0 [ <required> $stream ]
            Parameter #1 [ <required> int $length ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, ctor> public method __construct ] {

          - Parameters [10] {
            Parameter #0 [ <required> $data ]
            Parameter #1 [ <optional> ?ion\Catalog $catalog = null ]
            Parameter #2 [ <optional> ?ion\Decimal\Context $decimalContext = null ]
            Parameter #3 [ <optional> ?Closure $onContextChange = null ]
            Parameter #4 [ <optional> bool $returnSystemValues = false ]
            Parameter #5 [ <optional> int $maxContainerDepth = 10 ]
            Parameter #6 [ <optional> int $maxAnnotations = 10 ]
            Parameter #7 [ <optional> int $annotationBufferSize = 0x4000 ]
            Parameter #8 [ <optional> int $tempBufferSize = 0x4000 ]
            Parameter #9 [ <optional> bool $skipCharacterValidation = false ]
          }
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype RecursiveIterator> public method hasChildren ] {

          - Parameters [0] {
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype RecursiveIterator> public method getChildren ] {

          - Parameters [0] {
          }
          - Return [ ion\Reader ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype Iterator> public method rewind ] {

          - Parameters [0] {
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype Iterator> public method next ] {

          - Parameters [0] {
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype Iterator> public method valid ] {

          - Parameters [0] {
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype Iterator> public method key ] {

          - Parameters [0] {
          }
          - Return [ mixed ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype Iterator> public method current ] {

          - Parameters [0] {
          }
          - Return [ mixed ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method getType ] {

          - Parameters [0] {
          }
          - Return [ ion\Type ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method hasAnnotations ] {

          - Parameters [0] {
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method hasAnnotation ] {

          - Parameters [1] {
            Parameter #0 [ <required> string $annotation ]
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method isNull ] {

          - Parameters [0] {
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method isInStruct ] {

          - Parameters [0] {
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method getFieldName ] {

          - Parameters [0] {
          }
          - Return [ string ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method getFieldNameSymbol ] {

          - Parameters [0] {
          }
          - Return [ ion\Symbol ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method getAnnotations ] {

          - Parameters [0] {
          }
          - Return [ array ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method getAnnotationSymbols ] {

          - Parameters [0] {
          }
          - Return [ array ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method countAnnotations ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method getAnnotation ] {

          - Parameters [1] {
            Parameter #0 [ <required> int $index ]
          }
          - Return [ string ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method getAnnotationSymbol ] {

          - Parameters [1] {
            Parameter #0 [ <required> int $index ]
          }
          - Return [ ion\Symbol ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method readNull ] {

          - Parameters [0] {
          }
          - Return [ ion\Type ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method readBool ] {

          - Parameters [0] {
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method readInt ] {

          - Parameters [0] {
          }
          - Return [ string|int ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method readFloat ] {

          - Parameters [0] {
          }
          - Return [ float ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method readDecimal ] {

          - Parameters [0] {
          }
          - Return [ ion\Decimal ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method readTimestamp ] {

          - Parameters [0] {
          }
          - Return [ ion\Timestamp ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method readSymbol ] {

          - Parameters [0] {
          }
          - Return [ ion\Symbol ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method readString ] {

          - Parameters [0] {
          }
          - Return [ string ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method readStringPart ] {

          - Parameters [2] {
            Parameter #0 [ <required> &$string ]
            Parameter #1 [ <optional> int $length = 0x1000 ]
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method readLob ] {

          - Parameters [0] {
          }
          - Return [ string ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method readLobPart ] {

          - Parameters [2] {
            Parameter #0 [ <required> &$string ]
            Parameter #1 [ <optional> int $length = 0x1000 ]
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method getPosition ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method getDepth ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method seek ] {

          - Parameters [2] {
            Parameter #0 [ <required> int $offset ]
            Parameter #1 [ <optional> int $length = -1 ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method getValueOffset ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion, inherits ion\Reader\Reader, prototype ion\Reader> public method getValueLength ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }
      }
    }

    Interface [ <internal:ion> interface ion\Serializer ] {

      - Constants [0] {
      }

      - Static properties [0] {
      }

      - Static methods [0] {
      }

      - Properties [0] {
      }

      - Methods [1] {
        Method [ <internal:ion> abstract public method serialize ] {

          - Parameters [2] {
            Parameter #0 [ <required> mixed $data ]
            Parameter #1 [ <optional> ion\Writer|array|null $writer = null ]
          }
          - Return [ mixed ]
        }
      }
    }

    Class [ <internal:ion> class ion\Serializer\Serializer implements ion\Serializer ] {

      - Constants [0] {
      }

      - Static properties [0] {
      }

      - Static methods [0] {
      }

      - Properties [3] {
        Property [ public readonly bool $multiSequence ]
        Property [ public readonly bool $callMagicSerialize ]
        Property [ public readonly ?string $callCustomSerialize ]
      }

      - Methods [2] {
        Method [ <internal:ion, ctor> public method __construct ] {

          - Parameters [3] {
            Parameter #0 [ <optional> bool $multiSequence = false ]
            Parameter #1 [ <optional> bool $callMagicSerialize = true ]
            Parameter #2 [ <optional> ?string $callCustomSerialize = null ]
          }
        }

        Method [ <internal:ion, prototype ion\Serializer> public method serialize ] {

          - Parameters [2] {
            Parameter #0 [ <required> mixed $data ]
            Parameter #1 [ <optional> ion\Writer|array|null $writer = null ]
          }
          - Return [ mixed ]
        }
      }
    }

    Class [ <internal:ion> class ion\Symbol implements Stringable ] {

      - Constants [0] {
      }

      - Static properties [0] {
      }

      - Static methods [0] {
      }

      - Properties [3] {
        Property [ public readonly ?string $value ]
        Property [ public readonly int $sid ]
        Property [ public readonly ?ion\Symbol\ImportLocation $importLocation ]
      }

      - Methods [4] {
        Method [ <internal:ion, ctor> public method __construct ] {

          - Parameters [3] {
            Parameter #0 [ <optional> ?string $value = null ]
            Parameter #1 [ <optional> int $sid = -1 ]
            Parameter #2 [ <optional> ?ion\Symbol\ImportLocation $importLocation = null ]
          }
        }

        Method [ <internal:ion> public method equals ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Symbol $symbol ]
          }
          - Return [ bool ]
        }

        Method [ <internal:ion, prototype Stringable> public method __toString ] {

          - Parameters [0] {
          }
          - Return [ string ]
        }

        Method [ <internal:ion> public method toString ] {

          - Parameters [0] {
          }
          - Return [ string ]
        }
      }
    }

    Class [ <internal:ion> class ion\Symbol\ImportLocation ] {

      - Constants [0] {
      }

      - Static properties [0] {
      }

      - Static methods [0] {
      }

      - Properties [2] {
        Property [ public readonly string $name ]
        Property [ public readonly int $location ]
      }

      - Methods [1] {
        Method [ <internal:ion, ctor> public method __construct ] {

          - Parameters [2] {
            Parameter #0 [ <required> string $name ]
            Parameter #1 [ <required> int $location ]
          }
        }
      }
    }

    Interface [ <internal:ion> interface ion\Symbol\Table ] {

      - Constants [0] {
      }

      - Static properties [0] {
      }

      - Static methods [0] {
      }

      - Properties [0] {
      }

      - Methods [4] {
        Method [ <internal:ion> abstract public method getMaxId ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion> abstract public method add ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Symbol|string $symbol ]
          }
          - Return [ int ]
        }

        Method [ <internal:ion> abstract public method find ] {

          - Parameters [1] {
            Parameter #0 [ <required> string|int $id ]
          }
          - Return [ ?ion\Symbol ]
        }

        Method [ <internal:ion> abstract public method findLocal ] {

          - Parameters [1] {
            Parameter #0 [ <required> string|int $id ]
          }
          - Return [ ?ion\Symbol ]
        }
      }
    }

    Class [ <internal:ion> class ion\Symbol\Table\Local implements ion\Symbol\Table ] {

      - Constants [0] {
      }

      - Static properties [0] {
      }

      - Static methods [0] {
      }

      - Properties [2] {
        Property [ private array $imports = [] ]
        Property [ private array $symbols = [] ]
      }

      - Methods [6] {
        Method [ <internal:ion, ctor> public method __construct ] {

          - Parameters [0] {
          }
        }

        Method [ <internal:ion> public method import ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Symbol\Table $table ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, prototype ion\Symbol\Table> public method getMaxId ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion, prototype ion\Symbol\Table> public method add ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Symbol|string $symbol ]
          }
          - Return [ int ]
        }

        Method [ <internal:ion, prototype ion\Symbol\Table> public method find ] {

          - Parameters [1] {
            Parameter #0 [ <required> string|int $id ]
          }
          - Return [ ?ion\Symbol ]
        }

        Method [ <internal:ion, prototype ion\Symbol\Table> public method findLocal ] {

          - Parameters [1] {
            Parameter #0 [ <required> string|int $id ]
          }
          - Return [ ?ion\Symbol ]
        }
      }
    }

    Class [ <internal:ion> class ion\Symbol\Table\Shared implements ion\Symbol\Table ] {

      - Constants [0] {
      }

      - Static properties [0] {
      }

      - Static methods [0] {
      }

      - Properties [3] {
        Property [ public readonly string $name ]
        Property [ public readonly int $version ]
        Property [ private array $symbols = [] ]
      }

      - Methods [5] {
        Method [ <internal:ion, ctor> public method __construct ] {

          - Parameters [3] {
            Parameter #0 [ <required> string $name ]
            Parameter #1 [ <optional> int $version = 1 ]
            Parameter #2 [ <optional> ?array $symbols = null ]
          }
        }

        Method [ <internal:ion, prototype ion\Symbol\Table> public method getMaxId ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion, prototype ion\Symbol\Table> public method add ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Symbol|string $symbol ]
          }
          - Return [ int ]
        }

        Method [ <internal:ion, prototype ion\Symbol\Table> public method find ] {

          - Parameters [1] {
            Parameter #0 [ <required> string|int $id ]
          }
          - Return [ ?ion\Symbol ]
        }

        Method [ <internal:ion, prototype ion\Symbol\Table> public method findLocal ] {

          - Parameters [1] {
            Parameter #0 [ <required> string|int $id ]
          }
          - Return [ ?ion\Symbol ]
        }
      }
    }

    Interface [ <internal:ion> interface ion\Symbol\Enum ] {

      - Constants [0] {
      }

      - Static properties [0] {
      }

      - Static methods [0] {
      }

      - Properties [0] {
      }

      - Methods [3] {
        Method [ <internal:ion> abstract public method toSymbol ] {

          - Parameters [0] {
          }
          - Return [ ion\Symbol ]
        }

        Method [ <internal:ion> abstract public method toSID ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion> abstract public method toString ] {

          - Parameters [0] {
          }
          - Return [ string ]
        }
      }
    }

    Class [ <internal:ion> class ion\Symbol\System implements BackedEnum, UnitEnum, ion\Symbol\Enum ] {

      - Constants [9] {
        Constant [ public ion\Symbol\System Ion ] { Object }
        Constant [ public ion\Symbol\System Ivm_1_0 ] { Object }
        Constant [ public ion\Symbol\System IonSymbolTable ] { Object }
        Constant [ public ion\Symbol\System Name ] { Object }
        Constant [ public ion\Symbol\System Version ] { Object }
        Constant [ public ion\Symbol\System Imports ] { Object }
        Constant [ public ion\Symbol\System Symbols ] { Object }
        Constant [ public ion\Symbol\System MaxId ] { Object }
        Constant [ public ion\Symbol\System SharedSymbolTable ] { Object }
      }

      - Static properties [0] {
      }

      - Static methods [4] {
        Method [ <internal:ion> static public method asTable ] {

          - Parameters [0] {
          }
          - Return [ ion\Symbol\Table\Shared ]
        }

        Method [ <internal:ion, prototype UnitEnum> static public method cases ] {

          - Parameters [0] {
          }
          - Return [ array ]
        }

        Method [ <internal:ion, prototype BackedEnum> static public method from ] {

          - Parameters [1] {
            Parameter #0 [ <required> string|int $value ]
          }
          - Return [ static ]
        }

        Method [ <internal:ion, prototype BackedEnum> static public method tryFrom ] {

          - Parameters [1] {
            Parameter #0 [ <required> string|int $value ]
          }
          - Return [ ?static ]
        }
      }

      - Properties [2] {
        Property [ public readonly string $name ]
        Property [ public readonly string $value ]
      }

      - Methods [3] {
        Method [ <internal:ion, prototype ion\Symbol\Enum> public method toSymbol ] {

          - Parameters [0] {
          }
          - Return [ ion\Symbol ]
        }

        Method [ <internal:ion, prototype ion\Symbol\Enum> public method toSID ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion, prototype ion\Symbol\Enum> public method toString ] {

          - Parameters [0] {
          }
          - Return [ string ]
        }
      }
    }

    Class [ <internal:ion> class ion\Symbol\PHP implements BackedEnum, UnitEnum, ion\Symbol\Enum ] {

      - Constants [10] {
        Constant [ public ion\Symbol\PHP PHP ] { Object }
        Constant [ public ion\Symbol\PHP Reference ] { Object }
        Constant [ public ion\Symbol\PHP Backref ] { Object }
        Constant [ public ion\Symbol\PHP Property ] { Object }
        Constant [ public ion\Symbol\PHP Object ] { Object }
        Constant [ public ion\Symbol\PHP ClassObject ] { Object }
        Constant [ public ion\Symbol\PHP MagicObject ] { Object }
        Constant [ public ion\Symbol\PHP CustomObject ] { Object }
        Constant [ public ion\Symbol\PHP Enum ] { Object }
        Constant [ public ion\Symbol\PHP Serializable ] { Object }
      }

      - Static properties [0] {
      }

      - Static methods [4] {
        Method [ <internal:ion> static public method asTable ] {

          - Parameters [0] {
          }
          - Return [ ion\Symbol\Table\Shared ]
        }

        Method [ <internal:ion, prototype UnitEnum> static public method cases ] {

          - Parameters [0] {
          }
          - Return [ array ]
        }

        Method [ <internal:ion, prototype BackedEnum> static public method from ] {

          - Parameters [1] {
            Parameter #0 [ <required> string|int $value ]
          }
          - Return [ static ]
        }

        Method [ <internal:ion, prototype BackedEnum> static public method tryFrom ] {

          - Parameters [1] {
            Parameter #0 [ <required> string|int $value ]
          }
          - Return [ ?static ]
        }
      }

      - Properties [2] {
        Property [ public readonly string $name ]
        Property [ public readonly string $value ]
      }

      - Methods [3] {
        Method [ <internal:ion, prototype ion\Symbol\Enum> public method toSymbol ] {

          - Parameters [0] {
          }
          - Return [ ion\Symbol ]
        }

        Method [ <internal:ion, prototype ion\Symbol\Enum> public method toSID ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion, prototype ion\Symbol\Enum> public method toString ] {

          - Parameters [0] {
          }
          - Return [ string ]
        }
      }
    }

    Class [ <internal:ion> class ion\Timestamp extends DateTime implements Stringable, DateTimeInterface ] {

      - Constants [13] {
        Constant [ public string ATOM ] { Y-m-d\TH:i:sP }
        Constant [ public string COOKIE ] { l, d-M-Y H:i:s T }
        Constant [ public string ISO8601 ] { Y-m-d\TH:i:sO }
        Constant [ public string RFC822 ] { D, d M y H:i:s O }
        Constant [ public string RFC850 ] { l, d-M-y H:i:s T }
        Constant [ public string RFC1036 ] { D, d M y H:i:s O }
        Constant [ public string RFC1123 ] { D, d M Y H:i:s O }
        Constant [ public string RFC7231 ] { D, d M Y H:i:s \G\M\T }
        Constant [ public string RFC2822 ] { D, d M Y H:i:s O }
        Constant [ public string RFC3339 ] { Y-m-d\TH:i:sP }
        Constant [ public string RFC3339_EXTENDED ] { Y-m-d\TH:i:s.vP }
        Constant [ public string RSS ] { D, d M Y H:i:s O }
        Constant [ public string W3C ] { Y-m-d\TH:i:sP }
      }

      - Static properties [0] {
      }

      - Static methods [5] {
        Method [ <internal:date, inherits DateTime> static public method __set_state ] {

          - Parameters [1] {
            Parameter #0 [ <required> array $array ]
          }
          - Tentative return [ DateTime ]
        }

        Method [ <internal:date, inherits DateTime> static public method createFromImmutable ] {

          - Parameters [1] {
            Parameter #0 [ <required> DateTimeImmutable $object ]
          }
          - Tentative return [ DateTime ]
        }

        Method [ <internal:date, inherits DateTime> static public method createFromInterface ] {

          - Parameters [1] {
            Parameter #0 [ <required> DateTimeInterface $object ]
          }
          - Return [ DateTime ]
        }

        Method [ <internal:date, inherits DateTime> static public method createFromFormat ] {

          - Parameters [3] {
            Parameter #0 [ <required> string $format ]
            Parameter #1 [ <required> string $datetime ]
            Parameter #2 [ <optional> ?DateTimeZone $timezone = null ]
          }
          - Tentative return [ DateTime|false ]
        }

        Method [ <internal:date, inherits DateTime> static public method getLastErrors ] {

          - Parameters [0] {
          }
          - Tentative return [ array|false ]
        }
      }

      - Properties [2] {
        Property [ public readonly int $precision ]
        Property [ public readonly string $format ]
      }

      - Methods [16] {
        Method [ <internal:ion, overwrites DateTime, ctor> public method __construct ] {

          - Parameters [4] {
            Parameter #0 [ <required> ion\Timestamp\Precision|int $precision ]
            Parameter #1 [ <optional> ion\Timestamp\Format|string|null $format = null ]
            Parameter #2 [ <optional> ?string $datetime = null ]
            Parameter #3 [ <optional> DateTimeZone|string|null $timezone = null ]
          }
        }

        Method [ <internal:ion, prototype Stringable> public method __toString ] {

          - Parameters [0] {
          }
          - Return [ string ]
        }

        Method [ <internal:date, inherits DateTime, prototype DateTimeInterface> public method __wakeup ] {

          - Parameters [0] {
          }
          - Tentative return [ void ]
        }

        Method [ <internal:date, inherits DateTime, prototype DateTimeInterface> public method format ] {

          - Parameters [1] {
            Parameter #0 [ <required> string $format ]
          }
          - Tentative return [ string ]
        }

        Method [ <internal:date, inherits DateTime> public method modify ] {

          - Parameters [1] {
            Parameter #0 [ <required> string $modifier ]
          }
          - Tentative return [ DateTime|false ]
        }

        Method [ <internal:date, inherits DateTime> public method add ] {

          - Parameters [1] {
            Parameter #0 [ <required> DateInterval $interval ]
          }
          - Tentative return [ DateTime ]
        }

        Method [ <internal:date, inherits DateTime> public method sub ] {

          - Parameters [1] {
            Parameter #0 [ <required> DateInterval $interval ]
          }
          - Tentative return [ DateTime ]
        }

        Method [ <internal:date, inherits DateTime, prototype DateTimeInterface> public method getTimezone ] {

          - Parameters [0] {
          }
          - Tentative return [ DateTimeZone|false ]
        }

        Method [ <internal:date, inherits DateTime> public method setTimezone ] {

          - Parameters [1] {
            Parameter #0 [ <required> DateTimeZone $timezone ]
          }
          - Tentative return [ DateTime ]
        }

        Method [ <internal:date, inherits DateTime, prototype DateTimeInterface> public method getOffset ] {

          - Parameters [0] {
          }
          - Tentative return [ int ]
        }

        Method [ <internal:date, inherits DateTime> public method setTime ] {

          - Parameters [4] {
            Parameter #0 [ <required> int $hour ]
            Parameter #1 [ <required> int $minute ]
            Parameter #2 [ <optional> int $second = 0 ]
            Parameter #3 [ <optional> int $microsecond = 0 ]
          }
          - Tentative return [ DateTime ]
        }

        Method [ <internal:date, inherits DateTime> public method setDate ] {

          - Parameters [3] {
            Parameter #0 [ <required> int $year ]
            Parameter #1 [ <required> int $month ]
            Parameter #2 [ <required> int $day ]
          }
          - Tentative return [ DateTime ]
        }

        Method [ <internal:date, inherits DateTime> public method setISODate ] {

          - Parameters [3] {
            Parameter #0 [ <required> int $year ]
            Parameter #1 [ <required> int $week ]
            Parameter #2 [ <optional> int $dayOfWeek = 1 ]
          }
          - Tentative return [ DateTime ]
        }

        Method [ <internal:date, inherits DateTime> public method setTimestamp ] {

          - Parameters [1] {
            Parameter #0 [ <required> int $timestamp ]
          }
          - Tentative return [ DateTime ]
        }

        Method [ <internal:date, inherits DateTime, prototype DateTimeInterface> public method getTimestamp ] {

          - Parameters [0] {
          }
          - Tentative return [ int ]
        }

        Method [ <internal:date, inherits DateTime, prototype DateTimeInterface> public method diff ] {

          - Parameters [2] {
            Parameter #0 [ <required> DateTimeInterface $targetObject ]
            Parameter #1 [ <optional> bool $absolute = false ]
          }
          - Tentative return [ DateInterval ]
        }
      }
    }

    Class [ <internal:ion> class ion\Timestamp\Format implements BackedEnum, UnitEnum ] {

      - Constants [9] {
        Constant [ public ion\Timestamp\Format Year ] { Object }
        Constant [ public ion\Timestamp\Format Month ] { Object }
        Constant [ public ion\Timestamp\Format Day ] { Object }
        Constant [ public ion\Timestamp\Format Min ] { Object }
        Constant [ public ion\Timestamp\Format Sec ] { Object }
        Constant [ public ion\Timestamp\Format Frac ] { Object }
        Constant [ public ion\Timestamp\Format MinTZ ] { Object }
        Constant [ public ion\Timestamp\Format SecTZ ] { Object }
        Constant [ public ion\Timestamp\Format FracTZ ] { Object }
      }

      - Static properties [0] {
      }

      - Static methods [3] {
        Method [ <internal:ion, prototype UnitEnum> static public method cases ] {

          - Parameters [0] {
          }
          - Return [ array ]
        }

        Method [ <internal:ion, prototype BackedEnum> static public method from ] {

          - Parameters [1] {
            Parameter #0 [ <required> string|int $value ]
          }
          - Return [ static ]
        }

        Method [ <internal:ion, prototype BackedEnum> static public method tryFrom ] {

          - Parameters [1] {
            Parameter #0 [ <required> string|int $value ]
          }
          - Return [ ?static ]
        }
      }

      - Properties [2] {
        Property [ public readonly string $name ]
        Property [ public readonly string $value ]
      }

      - Methods [0] {
      }
    }

    Class [ <internal:ion> class ion\Timestamp\Precision implements BackedEnum, UnitEnum ] {

      - Constants [9] {
        Constant [ public ion\Timestamp\Precision Year ] { Object }
        Constant [ public ion\Timestamp\Precision Month ] { Object }
        Constant [ public ion\Timestamp\Precision Day ] { Object }
        Constant [ public ion\Timestamp\Precision Min ] { Object }
        Constant [ public ion\Timestamp\Precision Sec ] { Object }
        Constant [ public ion\Timestamp\Precision Frac ] { Object }
        Constant [ public ion\Timestamp\Precision MinTZ ] { Object }
        Constant [ public ion\Timestamp\Precision SecTZ ] { Object }
        Constant [ public ion\Timestamp\Precision FracTZ ] { Object }
      }

      - Static properties [0] {
      }

      - Static methods [3] {
        Method [ <internal:ion, prototype UnitEnum> static public method cases ] {

          - Parameters [0] {
          }
          - Return [ array ]
        }

        Method [ <internal:ion, prototype BackedEnum> static public method from ] {

          - Parameters [1] {
            Parameter #0 [ <required> string|int $value ]
          }
          - Return [ static ]
        }

        Method [ <internal:ion, prototype BackedEnum> static public method tryFrom ] {

          - Parameters [1] {
            Parameter #0 [ <required> string|int $value ]
          }
          - Return [ ?static ]
        }
      }

      - Properties [2] {
        Property [ public readonly string $name ]
        Property [ public readonly int $value ]
      }

      - Methods [0] {
      }
    }

    Class [ <internal:ion> class ion\Type implements BackedEnum, UnitEnum ] {

      - Constants [16] {
        Constant [ public ion\Type Null ] { Object }
        Constant [ public ion\Type Bool ] { Object }
        Constant [ public ion\Type Int ] { Object }
        Constant [ public ion\Type Float ] { Object }
        Constant [ public ion\Type Decimal ] { Object }
        Constant [ public ion\Type Timestamp ] { Object }
        Constant [ public ion\Type Symbol ] { Object }
        Constant [ public ion\Type String ] { Object }
        Constant [ public ion\Type CLob ] { Object }
        Constant [ public ion\Type BLob ] { Object }
        Constant [ public ion\Type List ] { Object }
        Constant [ public ion\Type SExp ] { Object }
        Constant [ public ion\Type Struct ] { Object }
        Constant [ public ion\Type Datagram ] { Object }
        Constant [ public ion\Type EOF ] { Object }
        Constant [ public ion\Type NONE ] { Object }
      }

      - Static properties [0] {
      }

      - Static methods [3] {
        Method [ <internal:ion, prototype UnitEnum> static public method cases ] {

          - Parameters [0] {
          }
          - Return [ array ]
        }

        Method [ <internal:ion, prototype BackedEnum> static public method from ] {

          - Parameters [1] {
            Parameter #0 [ <required> string|int $value ]
          }
          - Return [ static ]
        }

        Method [ <internal:ion, prototype BackedEnum> static public method tryFrom ] {

          - Parameters [1] {
            Parameter #0 [ <required> string|int $value ]
          }
          - Return [ ?static ]
        }
      }

      - Properties [2] {
        Property [ public readonly string $name ]
        Property [ public readonly int $value ]
      }

      - Methods [0] {
      }
    }

    Interface [ <internal:ion> interface ion\Writer ] {

      - Constants [0] {
      }

      - Static properties [0] {
      }

      - Static methods [0] {
      }

      - Properties [0] {
      }

      - Methods [21] {
        Method [ <internal:ion> abstract public method writeNull ] {

          - Parameters [0] {
          }
          - Return [ void ]
        }

        Method [ <internal:ion> abstract public method writeTypedNull ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Type $type ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion> abstract public method writeBool ] {

          - Parameters [1] {
            Parameter #0 [ <required> bool $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion> abstract public method writeInt ] {

          - Parameters [1] {
            Parameter #0 [ <required> string|int $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion> abstract public method writeFloat ] {

          - Parameters [1] {
            Parameter #0 [ <required> float $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion> abstract public method writeDecimal ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Decimal|string $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion> abstract public method writeTimestamp ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Timestamp|string $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion> abstract public method writeSymbol ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Symbol|string $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion> abstract public method writeString ] {

          - Parameters [1] {
            Parameter #0 [ <required> string $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion> abstract public method writeCLob ] {

          - Parameters [1] {
            Parameter #0 [ <required> string $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion> abstract public method writeBLob ] {

          - Parameters [1] {
            Parameter #0 [ <required> string $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion> abstract public method startLob ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Type $type ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion> abstract public method appendLob ] {

          - Parameters [1] {
            Parameter #0 [ <required> string $data ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion> abstract public method finishLob ] {

          - Parameters [0] {
          }
          - Return [ void ]
        }

        Method [ <internal:ion> abstract public method startContainer ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Type $type ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion> abstract public method finishContainer ] {

          - Parameters [0] {
          }
          - Return [ void ]
        }

        Method [ <internal:ion> abstract public method writeFieldName ] {

          - Parameters [1] {
            Parameter #0 [ <required> string $name ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion> abstract public method writeAnnotation ] {

          - Parameters [1] {
            Parameter #0 [ <optional> ion\Symbol|string ...$annotation ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion> abstract public method getDepth ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion> abstract public method flush ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion> abstract public method finish ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }
      }
    }

    Class [ <internal:ion> abstract class ion\Writer\Writer implements ion\Writer ] {

      - Constants [0] {
      }

      - Static properties [0] {
      }

      - Static methods [0] {
      }

      - Properties [12] {
        Property [ public readonly ?ion\Catalog $catalog ]
        Property [ public readonly ?ion\Decimal\Context $decimalContext ]
        Property [ public readonly bool $outputBinary ]
        Property [ public readonly bool $compactFloats ]
        Property [ public readonly bool $escapeNonAscii ]
        Property [ public readonly bool $prettyPrint ]
        Property [ public readonly bool $indentTabs ]
        Property [ public readonly int $indentSize ]
        Property [ public readonly bool $flushEveryValue ]
        Property [ public readonly int $maxContainerDepth ]
        Property [ public readonly int $maxAnnotations ]
        Property [ public readonly int $tempBufferSize ]
      }

      - Methods [22] {
        Method [ <internal:ion, ctor> public method __construct ] {

          - Parameters [12] {
            Parameter #0 [ <optional> ?ion\Catalog $catalog = null ]
            Parameter #1 [ <optional> ?ion\Decimal\Context $decimalContext = null ]
            Parameter #2 [ <optional> bool $outputBinary = false ]
            Parameter #3 [ <optional> bool $compactFloats = false ]
            Parameter #4 [ <optional> bool $escapeNonAscii = false ]
            Parameter #5 [ <optional> bool $prettyPrint = false ]
            Parameter #6 [ <optional> bool $indentTabs = true ]
            Parameter #7 [ <optional> int $indentSize = 2 ]
            Parameter #8 [ <optional> bool $flushEveryValue = false ]
            Parameter #9 [ <optional> int $maxContainerDepth = 10 ]
            Parameter #10 [ <optional> int $maxAnnotations = 10 ]
            Parameter #11 [ <optional> int $tempBufferSize = 0x4000 ]
          }
        }

        Method [ <internal:ion, prototype ion\Writer> public method writeNull ] {

          - Parameters [0] {
          }
          - Return [ void ]
        }

        Method [ <internal:ion, prototype ion\Writer> public method writeTypedNull ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Type $type ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, prototype ion\Writer> public method writeBool ] {

          - Parameters [1] {
            Parameter #0 [ <required> bool $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, prototype ion\Writer> public method writeInt ] {

          - Parameters [1] {
            Parameter #0 [ <required> string|int $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, prototype ion\Writer> public method writeFloat ] {

          - Parameters [1] {
            Parameter #0 [ <required> float $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, prototype ion\Writer> public method writeDecimal ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Decimal|string $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, prototype ion\Writer> public method writeTimestamp ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Timestamp|string $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, prototype ion\Writer> public method writeSymbol ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Symbol|string $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, prototype ion\Writer> public method writeString ] {

          - Parameters [1] {
            Parameter #0 [ <required> string $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, prototype ion\Writer> public method writeCLob ] {

          - Parameters [1] {
            Parameter #0 [ <required> string $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, prototype ion\Writer> public method writeBLob ] {

          - Parameters [1] {
            Parameter #0 [ <required> string $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, prototype ion\Writer> public method startLob ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Type $type ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, prototype ion\Writer> public method appendLob ] {

          - Parameters [1] {
            Parameter #0 [ <required> string $data ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, prototype ion\Writer> public method finishLob ] {

          - Parameters [0] {
          }
          - Return [ void ]
        }

        Method [ <internal:ion, prototype ion\Writer> public method startContainer ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Type $type ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, prototype ion\Writer> public method finishContainer ] {

          - Parameters [0] {
          }
          - Return [ void ]
        }

        Method [ <internal:ion, prototype ion\Writer> public method writeFieldName ] {

          - Parameters [1] {
            Parameter #0 [ <required> string $name ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, prototype ion\Writer> public method writeAnnotation ] {

          - Parameters [1] {
            Parameter #0 [ <optional> ion\Symbol|string ...$annotation ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, prototype ion\Writer> public method getDepth ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion, prototype ion\Writer> public method flush ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion, prototype ion\Writer> public method finish ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }
      }
    }

    Interface [ <internal:ion> interface ion\Writer\Buffer extends ion\Writer ] {

      - Constants [0] {
      }

      - Static properties [0] {
      }

      - Static methods [0] {
      }

      - Properties [0] {
      }

      - Methods [23] {
        Method [ <internal:ion> abstract public method getBuffer ] {

          - Parameters [0] {
          }
          - Return [ string ]
        }

        Method [ <internal:ion> abstract public method resetBuffer ] {

          - Parameters [0] {
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer> abstract public method writeNull ] {

          - Parameters [0] {
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer> abstract public method writeTypedNull ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Type $type ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer> abstract public method writeBool ] {

          - Parameters [1] {
            Parameter #0 [ <required> bool $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer> abstract public method writeInt ] {

          - Parameters [1] {
            Parameter #0 [ <required> string|int $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer> abstract public method writeFloat ] {

          - Parameters [1] {
            Parameter #0 [ <required> float $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer> abstract public method writeDecimal ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Decimal|string $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer> abstract public method writeTimestamp ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Timestamp|string $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer> abstract public method writeSymbol ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Symbol|string $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer> abstract public method writeString ] {

          - Parameters [1] {
            Parameter #0 [ <required> string $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer> abstract public method writeCLob ] {

          - Parameters [1] {
            Parameter #0 [ <required> string $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer> abstract public method writeBLob ] {

          - Parameters [1] {
            Parameter #0 [ <required> string $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer> abstract public method startLob ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Type $type ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer> abstract public method appendLob ] {

          - Parameters [1] {
            Parameter #0 [ <required> string $data ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer> abstract public method finishLob ] {

          - Parameters [0] {
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer> abstract public method startContainer ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Type $type ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer> abstract public method finishContainer ] {

          - Parameters [0] {
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer> abstract public method writeFieldName ] {

          - Parameters [1] {
            Parameter #0 [ <required> string $name ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer> abstract public method writeAnnotation ] {

          - Parameters [1] {
            Parameter #0 [ <optional> ion\Symbol|string ...$annotation ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer> abstract public method getDepth ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion, inherits ion\Writer> abstract public method flush ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion, inherits ion\Writer> abstract public method finish ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }
      }
    }

    Class [ <internal:ion> class ion\Writer\Buffer\Writer extends ion\Writer\Writer implements ion\Writer, ion\Writer\Buffer ] {

      - Constants [0] {
      }

      - Static properties [0] {
      }

      - Static methods [0] {
      }

      - Properties [12] {
        Property [ public readonly ?ion\Catalog $catalog ]
        Property [ public readonly ?ion\Decimal\Context $decimalContext ]
        Property [ public readonly bool $outputBinary ]
        Property [ public readonly bool $compactFloats ]
        Property [ public readonly bool $escapeNonAscii ]
        Property [ public readonly bool $prettyPrint ]
        Property [ public readonly bool $indentTabs ]
        Property [ public readonly int $indentSize ]
        Property [ public readonly bool $flushEveryValue ]
        Property [ public readonly int $maxContainerDepth ]
        Property [ public readonly int $maxAnnotations ]
        Property [ public readonly int $tempBufferSize ]
      }

      - Methods [24] {
        Method [ <internal:ion, prototype ion\Writer\Buffer> public method getBuffer ] {

          - Parameters [0] {
          }
          - Return [ string ]
        }

        Method [ <internal:ion, prototype ion\Writer\Buffer> public method resetBuffer ] {

          - Parameters [0] {
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, ctor> public method __construct ] {

          - Parameters [12] {
            Parameter #0 [ <optional> ?ion\Catalog $catalog = null ]
            Parameter #1 [ <optional> ?ion\Decimal\Context $decimalContext = null ]
            Parameter #2 [ <optional> bool $outputBinary = false ]
            Parameter #3 [ <optional> bool $compactFloats = false ]
            Parameter #4 [ <optional> bool $escapeNonAscii = false ]
            Parameter #5 [ <optional> bool $prettyPrint = false ]
            Parameter #6 [ <optional> bool $indentTabs = true ]
            Parameter #7 [ <optional> int $indentSize = 2 ]
            Parameter #8 [ <optional> bool $flushEveryValue = false ]
            Parameter #9 [ <optional> int $maxContainerDepth = 10 ]
            Parameter #10 [ <optional> int $maxAnnotations = 10 ]
            Parameter #11 [ <optional> int $tempBufferSize = 0x4000 ]
          }
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, prototype ion\Writer> public method writeNull ] {

          - Parameters [0] {
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, prototype ion\Writer> public method writeTypedNull ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Type $type ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, prototype ion\Writer> public method writeBool ] {

          - Parameters [1] {
            Parameter #0 [ <required> bool $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, prototype ion\Writer> public method writeInt ] {

          - Parameters [1] {
            Parameter #0 [ <required> string|int $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, prototype ion\Writer> public method writeFloat ] {

          - Parameters [1] {
            Parameter #0 [ <required> float $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, prototype ion\Writer> public method writeDecimal ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Decimal|string $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, prototype ion\Writer> public method writeTimestamp ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Timestamp|string $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, prototype ion\Writer> public method writeSymbol ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Symbol|string $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, prototype ion\Writer> public method writeString ] {

          - Parameters [1] {
            Parameter #0 [ <required> string $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, prototype ion\Writer> public method writeCLob ] {

          - Parameters [1] {
            Parameter #0 [ <required> string $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, prototype ion\Writer> public method writeBLob ] {

          - Parameters [1] {
            Parameter #0 [ <required> string $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, prototype ion\Writer> public method startLob ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Type $type ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, prototype ion\Writer> public method appendLob ] {

          - Parameters [1] {
            Parameter #0 [ <required> string $data ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, prototype ion\Writer> public method finishLob ] {

          - Parameters [0] {
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, prototype ion\Writer> public method startContainer ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Type $type ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, prototype ion\Writer> public method finishContainer ] {

          - Parameters [0] {
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, prototype ion\Writer> public method writeFieldName ] {

          - Parameters [1] {
            Parameter #0 [ <required> string $name ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, prototype ion\Writer> public method writeAnnotation ] {

          - Parameters [1] {
            Parameter #0 [ <optional> ion\Symbol|string ...$annotation ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, prototype ion\Writer> public method getDepth ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, prototype ion\Writer> public method flush ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, prototype ion\Writer> public method finish ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }
      }
    }

    Interface [ <internal:ion> interface ion\Writer\Stream extends ion\Writer ] {

      - Constants [0] {
      }

      - Static properties [0] {
      }

      - Static methods [0] {
      }

      - Properties [0] {
      }

      - Methods [22] {
        Method [ <internal:ion> abstract public method getStream ] {

          - Parameters [0] {
          }
        }

        Method [ <internal:ion, inherits ion\Writer> abstract public method writeNull ] {

          - Parameters [0] {
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer> abstract public method writeTypedNull ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Type $type ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer> abstract public method writeBool ] {

          - Parameters [1] {
            Parameter #0 [ <required> bool $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer> abstract public method writeInt ] {

          - Parameters [1] {
            Parameter #0 [ <required> string|int $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer> abstract public method writeFloat ] {

          - Parameters [1] {
            Parameter #0 [ <required> float $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer> abstract public method writeDecimal ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Decimal|string $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer> abstract public method writeTimestamp ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Timestamp|string $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer> abstract public method writeSymbol ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Symbol|string $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer> abstract public method writeString ] {

          - Parameters [1] {
            Parameter #0 [ <required> string $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer> abstract public method writeCLob ] {

          - Parameters [1] {
            Parameter #0 [ <required> string $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer> abstract public method writeBLob ] {

          - Parameters [1] {
            Parameter #0 [ <required> string $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer> abstract public method startLob ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Type $type ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer> abstract public method appendLob ] {

          - Parameters [1] {
            Parameter #0 [ <required> string $data ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer> abstract public method finishLob ] {

          - Parameters [0] {
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer> abstract public method startContainer ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Type $type ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer> abstract public method finishContainer ] {

          - Parameters [0] {
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer> abstract public method writeFieldName ] {

          - Parameters [1] {
            Parameter #0 [ <required> string $name ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer> abstract public method writeAnnotation ] {

          - Parameters [1] {
            Parameter #0 [ <optional> ion\Symbol|string ...$annotation ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer> abstract public method getDepth ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion, inherits ion\Writer> abstract public method flush ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion, inherits ion\Writer> abstract public method finish ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }
      }
    }

    Class [ <internal:ion> class ion\Writer\Stream\Writer extends ion\Writer\Writer implements ion\Writer, ion\Writer\Stream ] {

      - Constants [0] {
      }

      - Static properties [0] {
      }

      - Static methods [0] {
      }

      - Properties [12] {
        Property [ public readonly ?ion\Catalog $catalog ]
        Property [ public readonly ?ion\Decimal\Context $decimalContext ]
        Property [ public readonly bool $outputBinary ]
        Property [ public readonly bool $compactFloats ]
        Property [ public readonly bool $escapeNonAscii ]
        Property [ public readonly bool $prettyPrint ]
        Property [ public readonly bool $indentTabs ]
        Property [ public readonly int $indentSize ]
        Property [ public readonly bool $flushEveryValue ]
        Property [ public readonly int $maxContainerDepth ]
        Property [ public readonly int $maxAnnotations ]
        Property [ public readonly int $tempBufferSize ]
      }

      - Methods [23] {
        Method [ <internal:ion, overwrites ion\Writer\Writer, ctor> public method __construct ] {

          - Parameters [13] {
            Parameter #0 [ <required> $stream ]
            Parameter #1 [ <optional> ?ion\Catalog $catalog = null ]
            Parameter #2 [ <optional> ?ion\Decimal\Context $decimalContext = null ]
            Parameter #3 [ <optional> bool $outputBinary = false ]
            Parameter #4 [ <optional> bool $compactFloats = false ]
            Parameter #5 [ <optional> bool $escapeNonAscii = false ]
            Parameter #6 [ <optional> bool $prettyPrint = false ]
            Parameter #7 [ <optional> bool $indentTabs = true ]
            Parameter #8 [ <optional> int $indentSize = 2 ]
            Parameter #9 [ <optional> bool $flushEveryValue = false ]
            Parameter #10 [ <optional> int $maxContainerDepth = 10 ]
            Parameter #11 [ <optional> int $maxAnnotations = 10 ]
            Parameter #12 [ <optional> int $tempBufferSize = 0x4000 ]
          }
        }

        Method [ <internal:ion, prototype ion\Writer\Stream> public method getStream ] {

          - Parameters [0] {
          }
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, prototype ion\Writer> public method writeNull ] {

          - Parameters [0] {
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, prototype ion\Writer> public method writeTypedNull ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Type $type ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, prototype ion\Writer> public method writeBool ] {

          - Parameters [1] {
            Parameter #0 [ <required> bool $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, prototype ion\Writer> public method writeInt ] {

          - Parameters [1] {
            Parameter #0 [ <required> string|int $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, prototype ion\Writer> public method writeFloat ] {

          - Parameters [1] {
            Parameter #0 [ <required> float $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, prototype ion\Writer> public method writeDecimal ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Decimal|string $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, prototype ion\Writer> public method writeTimestamp ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Timestamp|string $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, prototype ion\Writer> public method writeSymbol ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Symbol|string $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, prototype ion\Writer> public method writeString ] {

          - Parameters [1] {
            Parameter #0 [ <required> string $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, prototype ion\Writer> public method writeCLob ] {

          - Parameters [1] {
            Parameter #0 [ <required> string $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, prototype ion\Writer> public method writeBLob ] {

          - Parameters [1] {
            Parameter #0 [ <required> string $value ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, prototype ion\Writer> public method startLob ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Type $type ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, prototype ion\Writer> public method appendLob ] {

          - Parameters [1] {
            Parameter #0 [ <required> string $data ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, prototype ion\Writer> public method finishLob ] {

          - Parameters [0] {
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, prototype ion\Writer> public method startContainer ] {

          - Parameters [1] {
            Parameter #0 [ <required> ion\Type $type ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, prototype ion\Writer> public method finishContainer ] {

          - Parameters [0] {
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, prototype ion\Writer> public method writeFieldName ] {

          - Parameters [1] {
            Parameter #0 [ <required> string $name ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, prototype ion\Writer> public method writeAnnotation ] {

          - Parameters [1] {
            Parameter #0 [ <optional> ion\Symbol|string ...$annotation ]
          }
          - Return [ void ]
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, prototype ion\Writer> public method getDepth ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, prototype ion\Writer> public method flush ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }

        Method [ <internal:ion, inherits ion\Writer\Writer, prototype ion\Writer> public method finish ] {

          - Parameters [0] {
          }
          - Return [ int ]
        }
      }
    }

    Interface [ <internal:ion> interface ion\Unserializer ] {

      - Constants [0] {
      }

      - Static properties [0] {
      }

      - Static methods [0] {
      }

      - Properties [0] {
      }

      - Methods [1] {
        Method [ <internal:ion> abstract public method unserialize ] {

          - Parameters [1] {
            Parameter #0 [ <required> $data ]
          }
          - Return [ mixed ]
        }
      }
    }

    Class [ <internal:ion> class ion\Unserializer\Unserializer implements ion\Unserializer ] {

      - Constants [0] {
      }

      - Static properties [0] {
      }

      - Static methods [0] {
      }

      - Properties [3] {
        Property [ public readonly bool $multiSequence ]
        Property [ public readonly bool $callMagicUnserialize ]
        Property [ public readonly ?string $callCustomUnserialize ]
      }

      - Methods [2] {
        Method [ <internal:ion, ctor> public method __construct ] {

          - Parameters [3] {
            Parameter #0 [ <optional> bool $multiSequence = false ]
            Parameter #1 [ <optional> bool $callMagicUnserialize = true ]
            Parameter #2 [ <optional> ?string $callCustomUnserialize = null ]
          }
        }

        Method [ <internal:ion, prototype ion\Unserializer> public method unserialize ] {

          - Parameters [1] {
            Parameter #0 [ <required> $data ]
          }
          - Return [ mixed ]
        }
      }
    }
  }
}