StringNode extends Node { @Override public Optional<StringNode> asStringNode() { return Optional.of(this); } StringNode(String value, SourceLocation sourceLocation); @SmithyInternalApi static Pair<StringNode, Consumer<String>> createLazyString(
            String placeholder, SourceLocation sourceLocation); @Override NodeType getType(); @Override R accept(NodeVisitor<R> visitor); @Override StringNode expectStringNode(String errorMessage); @Override Optional<StringNode> asStringNode(); String getValue(); String expectOneOf(String... validValues); String expectOneOf(Collection<String> validValues); ShapeId expectShapeId(String namespace); ShapeId expectShapeId(); @Override boolean equals(Object other); @Override int hashCode(); @Override String toString();  }
@Test public void convertsToStringNode() { assertTrue(Node.from("foo").asStringNode().isPresent()); }