public function createObjectProperty(TES5MultipleScriptsScope $multipleScriptsScope, TES5Referencer $reference, $propertyName)
 {
     $this->typeInferencer->inferenceVariableByReferenceEdid($reference->getReferencesTo(), $multipleScriptsScope);
     $remoteProperty = $multipleScriptsScope->getPropertyFromScript($reference->getReferencesTo()->getPropertyType()->value(), $propertyName);
     $objectProperty = new TES5ObjectProperty($reference, $remoteProperty);
     return $objectProperty;
 }
 public function inferenceObjectByAssignation(TES5Referencer $reference, TES5Value $value, TES5MultipleScriptsScope $multipleScriptsScope)
 {
     if ($reference->getReferencesTo() !== null && !$reference->getType()->isPrimitive()) {
         $this->inferenceType($reference->getReferencesTo(), $value->getType()->getNativeType(), $multipleScriptsScope);
     }
 }
 public function output()
 {
     $referenceOutput = $this->objectReference->output();
     $referenceOutput = $referenceOutput[0];
     return [$referenceOutput . '.' . $this->property->getPropertyName()];
 }
 public function getType()
 {
     return TES5InheritanceGraphAnalyzer::findReturnTypeForObjectCall($this->called->getType(), $this->functionName);
 }