public function guessType($class, $property)
    {
        if (!$ret = $this->getMetadata($class)) {
            return new TypeGuess('text', array(), Guess::LOW_CONFIDENCE);
        }

        list($metadata, $name) = $ret;

        /** @var $metadata ClassMetadata */
        $idFieldNames = $metadata->getIdentifierFieldNames();
        if (count($idFieldNames) == 1 && $property == $idFieldNames[0]) {
            return new TypeGuess('id', array('class' => $class), Guess::HIGH_CONFIDENCE);
        }

        $guess = parent::guessType($class, $property);

        $options = $guess->getOptions();

        switch ($guess->getType()) {
            case 'number':
                return new TypeGuess('float',$guess->getOptions(), $guess->getConfidence());
            case 'entity':
                if ($options['multiple']) {
                    return new TypeGuess('collection', array('type' => 'entity', 'options' => array('data_class' => $options['class'])), $guess->getConfidence());
                }

                return new TypeGuess('entity', array('data_class' => $options['class']), $guess->getConfidence());
            case 'textarea':
                return new TypeGuess('text', $guess->getOptions(), $guess->getConfidence());
            case 'checkbox':
                return new TypeGuess('boolean', $guess->getOptions(), $guess->getConfidence());
            default:
                return new TypeGuess($guess->getType(), $guess->getOptions(), $guess->getConfidence());
        }
    }