| Methods | 
	
			| 
					
	public
					
					
				 | __construct(ClassReflection $classReflection, ?Type $subtractedType = null) | # | 
	
			| 
					
	public
					
					
				 | getClassName(): string | # | 
	
			| 
					
	public
					
					
				 | getClassReflection(): ClassReflection | # | 
	
			| 
					
	public
					
					
				 | getAncestorWithClassName(string $className): ?TypeWithClassName | # | 
	
			| 
					
	public
					
					
				 | getStaticObjectType(): ObjectType | # | 
	
			| 
					
	public
					
					
				 | getReferencedClasses(): array | # | 
	
			| 
					
	public
					
					
				 | getObjectClassNames(): array | # | 
	
			| 
					
	public
					
					
				 | getObjectClassReflections(): array | # | 
	
			| 
					
	public
					
					
				 | getArrays(): array | # | 
	
			| 
					
	public
					
					
				 | getConstantArrays(): array | # | 
	
			| 
					
	public
					
					
				 | getConstantStrings(): array | # | 
	
			| 
					
	public
					
					
				 | accepts(Type $type, bool $strictTypes): AcceptsResult | # | 
	
			| 
					
	public
					
					
				 | isSuperTypeOf(Type $type): IsSuperTypeOfResult | # | 
	
			| 
					
	public
					
					
				 | equals(Type $type): bool | # | 
	
			| 
					
	public
					
					
				 | describe(VerbosityLevel $level): string | # | 
	
			| 
					
	public
					
					
				 | getTemplateType(string $ancestorClassName, string $templateTypeName): Type
		Returns actual template type for a given object. Example: @-template T
class Foo {} // $fooType is Foo
$t = $fooType->getTemplateType(Foo::class, 'T');
$t->isInteger(); // yes Returns ErrorType in case of a missing type. 
	Returns actual template type for a given object. Example: @-template T
class Foo {} // $fooType is Foo
$t = $fooType->getTemplateType(Foo::class, 'T');
$t->isInteger(); // yes Returns ErrorType in case of a missing type.Implements | # | 
	
			| 
					
	public
					
					
				 | isObject(): TrinaryLogic | # | 
	
			| 
					
	public
					
					
				 | isEnum(): TrinaryLogic | # | 
	
			| 
					
	public
					
					
				 | canAccessProperties(): TrinaryLogic | # | 
	
			| 
					
	public
					
					
				 | hasProperty(string $propertyName): TrinaryLogic | # | 
	
			| 
					
	public
					
					
				 | getProperty(string $propertyName, ClassMemberAccessAnswerer $scope): ExtendedPropertyReflection | # | 
	
			| 
					
	public
					
					
				 | getUnresolvedPropertyPrototype(
	string $propertyName,
	ClassMemberAccessAnswerer $scope,
): UnresolvedPropertyPrototypeReflection | # | 
	
			| 
					
	public
					
					
				 | hasInstanceProperty(string $propertyName): TrinaryLogic | # | 
	
			| 
					
	public
					
					
				 | getInstanceProperty(string $propertyName, ClassMemberAccessAnswerer $scope): ExtendedPropertyReflection | # | 
	
			| 
					
	public
					
					
				 | getUnresolvedInstancePropertyPrototype(
	string $propertyName,
	ClassMemberAccessAnswerer $scope,
): UnresolvedPropertyPrototypeReflection | # | 
	
			| 
					
	public
					
					
				 | hasStaticProperty(string $propertyName): TrinaryLogic | # | 
	
			| 
					
	public
					
					
				 | getStaticProperty(string $propertyName, ClassMemberAccessAnswerer $scope): ExtendedPropertyReflection | # | 
	
			| 
					
	public
					
					
				 | getUnresolvedStaticPropertyPrototype(
	string $propertyName,
	ClassMemberAccessAnswerer $scope,
): UnresolvedPropertyPrototypeReflection | # | 
	
			| 
					
	public
					
					
				 | canCallMethods(): TrinaryLogic | # | 
	
			| 
					
	public
					
					
				 | hasMethod(string $methodName): TrinaryLogic | # | 
	
			| 
					
	public
					
					
				 | getMethod(string $methodName, ClassMemberAccessAnswerer $scope): ExtendedMethodReflection | # | 
	
			| 
					
	public
					
					
				 | getUnresolvedMethodPrototype(string $methodName, ClassMemberAccessAnswerer $scope): UnresolvedMethodPrototypeReflection | # | 
	
			| 
					
	public
					
					
				 | canAccessConstants(): TrinaryLogic | # | 
	
			| 
					
	public
					
					
				 | hasConstant(string $constantName): TrinaryLogic | # | 
	
			| 
					
	public
					
					
				 | getConstant(string $constantName): ClassConstantReflection | # | 
	
			| 
					
	public
					
					
				 | changeBaseClass(ClassReflection $classReflection): self | # | 
	
			| 
					
	public
					
					
				 | isIterable(): TrinaryLogic | # | 
	
			| 
					
	public
					
					
				 | isIterableAtLeastOnce(): TrinaryLogic | # | 
	
			| 
					
	public
					
					
				 | getArraySize(): Type | # | 
	
			| 
					
	public
					
					
				 | getIterableKeyType(): Type | # | 
	
			| 
					
	public
					
					
				 | getFirstIterableKeyType(): Type | # | 
	
			| 
					
	public
					
					
				 | getLastIterableKeyType(): Type | # | 
	
			| 
					
	public
					
					
				 | getIterableValueType(): Type | # | 
	
			| 
					
	public
					
					
				 | getFirstIterableValueType(): Type | # | 
	
			| 
					
	public
					
					
				 | getLastIterableValueType(): Type | # | 
	
			| 
					
	public
					
					
				 | isOffsetAccessible(): TrinaryLogic | # | 
	
			| 
					
	public
					
					
				 | isOffsetAccessLegal(): TrinaryLogic | # | 
	
			| 
					
	public
					
					
				 | hasOffsetValueType(Type $offsetType): TrinaryLogic | # | 
	
			| 
					
	public
					
					
				 | getOffsetValueType(Type $offsetType): Type | # | 
	
			| 
					
	public
					
					
				 | setOffsetValueType(?Type $offsetType, Type $valueType, bool $unionValues = true): Type | # | 
	
			| 
					
	public
					
					
				 | setExistingOffsetValueType(Type $offsetType, Type $valueType): Type | # | 
	
			| 
					
	public
					
					
				 | unsetOffset(Type $offsetType): Type | # | 
	
			| 
					
	public
					
					
				 | getKeysArrayFiltered(Type $filterValueType, TrinaryLogic $strict): Type | # | 
	
			| 
					
	public
					
					
				 | getKeysArray(): Type | # | 
	
			| 
					
	public
					
					
				 | getValuesArray(): Type | # | 
	
			| 
					
	public
					
					
				 | chunkArray(Type $lengthType, TrinaryLogic $preserveKeys): Type | # | 
	
			| 
					
	public
					
					
				 | fillKeysArray(Type $valueType): Type | # | 
	
			| 
					
	public
					
					
				 | flipArray(): Type | # | 
	
			| 
					
	public
					
					
				 | intersectKeyArray(Type $otherArraysType): Type | # | 
	
			| 
					
	public
					
					
				 | popArray(): Type | # | 
	
			| 
					
	public
					
					
				 | reverseArray(TrinaryLogic $preserveKeys): Type | # | 
	
			| 
					
	public
					
					
				 | searchArray(Type $needleType, ?TrinaryLogic $strict = null): Type | # | 
	
			| 
					
	public
					
					
				 | shiftArray(): Type | # | 
	
			| 
					
	public
					
					
				 | shuffleArray(): Type | # | 
	
			| 
					
	public
					
					
				 | sliceArray(Type $offsetType, Type $lengthType, TrinaryLogic $preserveKeys): Type | # | 
	
			| 
					
	public
					
					
				 | spliceArray(Type $offsetType, Type $lengthType, Type $replacementType): Type | # | 
	
			| 
					
	public
					
					
				 | isCallable(): TrinaryLogic | # | 
	
			| 
					
	public
					
					
				 | getEnumCases(): array | # | 
	
			| 
					
	public
					
					
				 | isArray(): TrinaryLogic | # | 
	
			| 
					
	public
					
					
				 | isConstantArray(): TrinaryLogic | # | 
	
			| 
					
	public
					
					
				 | isOversizedArray(): TrinaryLogic | # | 
	
			| 
					
	public
					
					
				 | isList(): TrinaryLogic | # | 
	
			| 
					
	public
					
					
				 | isNull(): TrinaryLogic | # | 
	
			| 
					
	public
					
					
				 | isConstantValue(): TrinaryLogic
		Is Type of a known constant value? Includes literal strings, integers, floats, true, false, null, and array shapes. 
	Is Type of a known constant value? Includes literal strings, integers, floats, true, false, null, and array shapes.Implements | # | 
	
			| 
					
	public
					
					
				 | isConstantScalarValue(): TrinaryLogic
		Is Type of a known constant scalar value? Includes literal strings, integers, floats, true, false, and null. 
	Is Type of a known constant scalar value? Includes literal strings, integers, floats, true, false, and null.Implements | # | 
	
			| 
					
	public
					
					
				 | getConstantScalarTypes(): array | # | 
	
			| 
					
	public
					
					
				 | getConstantScalarValues(): array | # | 
	
			| 
					
	public
					
					
				 | isTrue(): TrinaryLogic | # | 
	
			| 
					
	public
					
					
				 | isFalse(): TrinaryLogic | # | 
	
			| 
					
	public
					
					
				 | isBoolean(): TrinaryLogic | # | 
	
			| 
					
	public
					
					
				 | isFloat(): TrinaryLogic | # | 
	
			| 
					
	public
					
					
				 | isInteger(): TrinaryLogic | # | 
	
			| 
					
	public
					
					
				 | isString(): TrinaryLogic | # | 
	
			| 
					
	public
					
					
				 | isNumericString(): TrinaryLogic | # | 
	
			| 
					
	public
					
					
				 | isNonEmptyString(): TrinaryLogic | # | 
	
			| 
					
	public
					
					
				 | isNonFalsyString(): TrinaryLogic | # | 
	
			| 
					
	public
					
					
				 | isLiteralString(): TrinaryLogic | # | 
	
			| 
					
	public
					
					
				 | isLowercaseString(): TrinaryLogic | # | 
	
			| 
					
	public
					
					
				 | isUppercaseString(): TrinaryLogic | # | 
	
			| 
					
	public
					
					
				 | isClassString(): TrinaryLogic | # | 
	
			| 
					
	public
					
					
				 | getClassStringObjectType(): Type
		Returns object type Foo for class-string<Foo> and 'Foo' (if Foo is a valid class). 
	Returns object type Foo for class-string<Foo> and 'Foo' (if Foo is a valid class).Implements | # | 
	
			| 
					
	public
					
					
				 | getObjectTypeOrClassStringObjectType(): Type
		Returns object type Foo for class-string<Foo>, 'Foo' (if Foo is a valid class),
and object type Foo. 
	Returns object type Foo for class-string<Foo>, 'Foo' (if Foo is a valid class),
and object type Foo.Implements | # | 
	
			| 
					
	public
					
					
				 | isVoid(): TrinaryLogic | # | 
	
			| 
					
	public
					
					
				 | isScalar(): TrinaryLogic | # | 
	
			| 
					
	public
					
					
				 | looseCompare(Type $type, PhpVersion $phpVersion): BooleanType | # | 
	
			| 
					
	public
					
					
				 | getCallableParametersAcceptors(ClassMemberAccessAnswerer $scope): array | # | 
	
			| 
					
	public
					
					
				 | isCloneable(): TrinaryLogic | # | 
	
			| 
					
	public
					
					
				 | toNumber(): Type | # | 
	
			| 
					
	public
					
					
				 | toAbsoluteNumber(): Type | # | 
	
			| 
					
	public
					
					
				 | toString(): Type | # | 
	
			| 
					
	public
					
					
				 | toInteger(): Type | # | 
	
			| 
					
	public
					
					
				 | toFloat(): Type | # | 
	
			| 
					
	public
					
					
				 | toArray(): Type | # | 
	
			| 
					
	public
					
					
				 | toArrayKey(): Type | # | 
	
			| 
					
	public
					
					
				 | toCoercedArgumentType(bool $strictTypes): Type
		Tells how a type might change when passed to an argument
or assigned to a typed property. Example: int is accepted by int|float with strict_types = 1
Stringable is accepted by string|Stringable even without strict_types. 
	Tells how a type might change when passed to an argument
or assigned to a typed property. Example: int is accepted by int|float with strict_types = 1
Stringable is accepted by string|Stringable even without strict_types.Implements | # | 
	
			| 
					
	public
					
					
				 | toBoolean(): BooleanType | # | 
	
			| 
					
	public
					
					
				 | traverse(callable $cb): Type
		Traverses inner types Returns a new instance with all inner types mapped through $cb. Might
return the same instance if inner types did not change. 
	Traverses inner types Returns a new instance with all inner types mapped through $cb. Might
return the same instance if inner types did not change.Overridden byImplements | # | 
	
			| 
					
	public
					
					
				 | traverseSimultaneously(Type $right, callable $cb): Type
		Traverses inner types while keeping the same context in another type. 
	Traverses inner types while keeping the same context in another type.Overridden byImplements | # | 
	
			| 
					
	public
					
					
				 | subtract(Type $type): Type
	 | # | 
	
			| 
					
	public
					
					
				 | getTypeWithoutSubtractedType(): Type
	 | # | 
	
			| 
					
	public
					
					
				 | changeSubtractedType(?Type $subtractedType): Type | # | 
	
			| 
					
	public
					
					
				 | getSubtractedType(): ?Type
	 | # | 
	
			| 
					
	public
					
					
				 | tryRemove(Type $typeToRemove): ?Type
		Return the difference with another type, or null if it cannot be represented. 
	Return the difference with another type, or null if it cannot be represented.Implements | # | 
	
			| 
					
	public
					
					
				 | exponentiate(Type $exponent): Type | # | 
	
			| 
					
	public
					
					
				 | getFiniteTypes(): array
		Returns a list of finite values. Examples: - for bool: [true, false] 
for int<0, 3>: [0, 1, 2, 3]for enums: list of enum casesfor scalars: the scalar itself For infinite types it returns an empty array. 
	Returns a list of finite values. Examples: - for bool: [true, false] 
for int<0, 3>: [0, 1, 2, 3]for enums: list of enum casesfor scalars: the scalar itself For infinite types it returns an empty array.Implements | # | 
	
			| 
					
	public
					
					
				 | toPhpDocNode(): TypeNode | # |