### Question:
JavaSymbolicObject extends ASTNode implements Transformable, Visitable { public boolean isNormal() { if (isNormal == null) { new IsNormalFieldInitializer().visitNode(this); } return isNormal; } protected  JavaSymbolicObject(); protected  JavaSymbolicObject(Source source, Location location); T substituteWithBinders(
            Map<Variable, ? extends Term> substitution); T substitute(
            Map<Variable, ? extends Term> substitution); T renameVariables(); boolean canSubstituteAndEvaluate(Map<Variable, ? extends Term> substitution, ConjunctiveFormula constraint); PSet<Variable> variableSet(); boolean isGround(); boolean isNormal(); boolean isConcrete(); boolean isEvaluated(ConjunctiveFormula constraint); Set<Term> userVariableSet(GlobalContext global); @Override ASTNode shallowCopy();  }### Answer:
@Test public void testIsNormal() { Variable v1 = new Variable("foo", Sort.of("bar@FOO")); assertTrue(v1.isNormal()); KItem k1 = new KItem(KLabelConstant.of("foo", definition), KList.EMPTY, Sort.of("bar@FOO"), true); assertTrue(k1.isNormal()); assertTrue(k1.kLabel().isNormal()); assertTrue(k1.kList().isNormal()); KItem k2 = new KItem(KLabelConstant.of("isFoo@FOO", definition), KList.EMPTY, Sort.of("bar@FOO"), true); assertFalse(k2.isNormal()); assertTrue(k2.kLabel().isNormal()); assertTrue(k2.kList().isNormal()); KList list = (KList) KList.concatenate(k1, k2); KItem k3 = new KItem(KLabelConstant.of("foo", definition), list, Sort.of("bar@FOO"), true); assertFalse(k3.isNormal()); assertTrue(k3.kLabel().isNormal()); assertSame(list, k3.kList()); assertFalse(list.isNormal()); assertSame(k1, list.get(0)); assertSame(k2, list.get(1)); assertTrue(k1.isNormal()); assertTrue(k1.kLabel().isNormal()); assertTrue(k1.kList().isNormal()); assertFalse(k2.isNormal()); assertTrue(k2.kLabel().isNormal()); assertTrue(k2.kList().isNormal()); }