StringNode extends Node { public String getValue() { return value; } 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 hasValue() { StringNode node = Node.from("foo"); assertEquals("foo", node.getValue()); }