public SchemaAndValue parse(boolean embedded) throws NoSuchElementException {
            if (!parser.hasNext()) {
                return null;
            } else if (embedded && parser.canConsume(QUOTE_DELIMITER)) {
                return parseQuotedString();
            } else if (canParseSingleTokenLiteral(embedded, NULL_VALUE)) {
                return null;
            } else if (canParseSingleTokenLiteral(embedded, TRUE_LITERAL)) {
                return TRUE_SCHEMA_AND_VALUE;
            } else if (canParseSingleTokenLiteral(embedded, FALSE_LITERAL)) {
                return FALSE_SCHEMA_AND_VALUE;
            }

            int startPosition = parser.mark();

            try {
                if (parser.canConsume(ARRAY_BEGIN_DELIMITER)) {
                    return parseArray();
                } else if (parser.canConsume(MAP_BEGIN_DELIMITER)) {
                    return parseMap();
                }
            } catch (DataException e) {
                log.trace("Unable to parse the value as a map or an array; reverting to string", e);
                parser.rewindTo(startPosition);
            }

            String token = parser.next();
            if (Utils.isBlank(token)) {
                return new SchemaAndValue(Schema.STRING_SCHEMA, token);
            } else {
                return parseNextToken(embedded, token.trim());
            }
        }
Convert the specified value with the desired floating point type.

@param value  the value to be converted; may not be null
@param schema the schema for the current value type; may not be null
@param error  any previous error that should be included in an exception message; may be null
@return the double value after conversion; never null
@throws DataException if the value could not be converted to a double
connect/api/src/main/java/org/apache/kafka/connect/data/Values.java