public function createTypeDefinition(
        $id,
        $localName,
        $baseTypeIdString,
        $parentId,
        $creatable,
        $fileable,
        $queryable,
        $controllablePolicy,
        $controllableACL,
        $fulltextIndexed,
        $includedInSupertypeQuery,
        $localNamespace = '',
        $queryName = '',
        $displayName = '',
        $description = '',
        TypeMutabilityInterface $typeMutability = null
    ) {
        $typeDefinition = $this->getBindingsObjectFactory()->getTypeDefinitionByBaseTypeId($baseTypeIdString, $id);

        $typeDefinition->setLocalName($localName);
        $typeDefinition->setParentTypeId($parentId);
        $typeDefinition->setIsCreatable($creatable);
        $typeDefinition->setIsFileable($fileable);
        $typeDefinition->setIsQueryable($queryable);
        $typeDefinition->setisControllablePolicy($controllablePolicy);
        $typeDefinition->setIsControllableAcl($controllableACL);
        $typeDefinition->setIsFulltextIndexed($fulltextIndexed);
        $typeDefinition->setIsIncludedInSupertypeQuery($includedInSupertypeQuery);
        $typeDefinition->setLocalNamespace($localNamespace);
        $typeDefinition->setQueryName($queryName);
        $typeDefinition->setDisplayName($displayName);
        $typeDefinition->setDescription($description);
        if ($typeMutability !== null) {
            $typeDefinition->setTypeMutability($typeMutability);
        }

        return $typeDefinition;
    }