protected boolean consumeSpecimens(
List<ParseTreeNode> specimens, Map<String, ParseTreeNode> bindings) {
if (specimens.isEmpty()) { return false; }
ParseTreeNode specimen = specimens.get(0);
if (!(specimen instanceof StringLiteral)) { return false; }
StringLiteral lit = (StringLiteral) specimen;
String ident = lit.getUnquotedValue();
if (!ParserBase.isJavascriptIdentifier(ident)) { return false; }
ParseTreeNode existing = bindings.get(bindingName);
if (existing != null
&& !(existing instanceof Identifier
&& ident.equals(existing.getValue()))) {
return false;
} else {
Identifier identBinding = new Identifier(lit.getFilePosition(), ident);
bindings.put(bindingName, identBinding);
specimens.remove(0);
return true;
}
}