!**< def !define test (!|fitlibrary.specify.DoFixtureFlowUnderTest| | appends | | plus| | plus| |another object| | plus| |access other| An Integer is not wrapped, so parseInt won't apply to it: |an Integer| |parse int|3|is|3| ) **! * If a workflow action returns an object, it's wrapped in a new ''!-WorkflowTraverse-!'', so that the object can be tested in the rest of the table. * However, this doesn't apply if the object is any of the following: a Fixture, a Traverse, an array, a Collection, a primitive value or a Value Object. * Primitive values include int, boolean, float, double, char, Boolean, Character, as well as all the Number subclasses (Integer, BigDecimal, Byte, Long etc etc). |!-fitlibrary.spec.SpecifyFixture-!| |${test}|!-
fitlibrary.specify.DoFixtureFlowUnderTest

appends
plus
plus

another object
plus
access other

An Integer is not wrapped, so parseInt won't apply to it:

an Integer
parse int
Missing class or Missing method
3 is 3
-!| * ''appends()'' returns a String, which is not auto-wrapped, and so ''plus()'' is applied to the original ''!-DoFixture-!'' * ''anotherObject()'' returns a fixture, which is itself not auto-wrapped * Now ''plus()'' is not found in that fixture, as it's a method of that new fixture, and so the method in the original ''!-DoFixture-!'' is called instead (outer scope) * But ''accessOther()'' is found in that fixture, and so is executed there.