public function __construct(Clazz $class, Property $property, $declaringClass = null)
 {
     $this->class = $class;
     $this->property = $property;
     $this->name = $property->getName();
     if ($class->getName() === $declaringClass) {
         $declaringClass = null;
     }
     $this->declaringClass = $declaringClass;
 }
 private function insertProperty(Property $property, $packageVersionId)
 {
     $this->propertyStmt->bindValue(1, $property->getName());
     $this->propertyStmt->bindValue(2, $property->getVisibility(), \PDO::PARAM_INT);
     $this->propertyStmt->bindValue(3, $this->phpType->convertToDatabaseValue($property->getPhpType(), $this->platform));
     $this->propertyStmt->bindValue(4, $packageVersionId, \PDO::PARAM_INT);
     $this->propertyStmt->execute();
     $propertyId = $this->con->lastInsertId();
     $this->propertyIdRef->setValue($property, $propertyId);
     return $propertyId;
 }
 private function inferTypesForProperty(Property $property)
 {
     if (($type = $property->getPhpType()) && !$type->isUnknownType()) {
         return;
     }
     if (null !== ($node = $property->getAstNode())) {
         if ($property instanceof \PHPParser_Node_Stmt_Class) {
             $type = $this->parser->getTypeFromMagicPropertyAnnotation($node, $property->getName());
         } else {
             $type = $this->parser->getTypeFromVarAnnotation($node);
         }
     }
     if (null === $type) {
         $type = $this->registry->getNativeType('unknown');
     }
     $property->setPhpType($type);
     if ($node) {
         $node->setAttribute('type', $type);
     }
 }
 public function addProperty(Property $property, $declaringClass = null)
 {
     $classProperty = new ClassProperty($this, $property, $declaringClass);
     $this->properties->set($property->getName(), $classProperty);
 }