Files
allwpilib/networktables/java/lib/jmock/jmock-2.6.0-RC2.jar

5728 lines
302 KiB
Plaintext
Raw Normal View History

PK
<00><><EFBFBD>< META-INF/<2F><>PK
<00><><EFBFBD><:<3A><>WffMETA-INF/MANIFEST.MFManifest-Version: 1.0
Ant-Version: Apache Ant 1.7.0
Created-By: 14.2-b01 (Sun Microsystems Inc.)
PK
<00><><EFBFBD><org/PK
<00><><EFBFBD><
org/jmock/PK
<00><><EFBFBD><org/jmock/api/PK
<00><><EFBFBD><org/jmock/auto/PK
<00><><EFBFBD><org/jmock/auto/internal/PK
<00><><EFBFBD><org/jmock/internal/PK
<00><><EFBFBD><org/jmock/internal/matcher/PK
<00><><EFBFBD><org/jmock/lib/PK
<00><><EFBFBD><org/jmock/lib/action/PK
<00><><EFBFBD><org/jmock/lib/concurrent/PK
<00><><EFBFBD><"org/jmock/lib/concurrent/internal/PK
<00><><EFBFBD><org/jmock/syntax/PK
<00><><EFBFBD><<3C> 3<><33><00>org/jmock/Expectations$1.class<73><73><EFBFBD><EFBFBD>1@ 6
7
589:;this$0Lorg/jmock/Expectations;<init>(Lorg/jmock/Expectations;)VCodeLineNumberTableLocalVariableTablethis InnerClassesLorg/jmock/Expectations$1; booleanIs(Lorg/hamcrest/Matcher;)ZmatcherLorg/hamcrest/Matcher;LocalVariableTypeTableLorg/hamcrest/Matcher<*>; Signature(Lorg/hamcrest/Matcher<*>;)ZbyteIs(Lorg/hamcrest/Matcher;)B(Lorg/hamcrest/Matcher<*>;)BcharIs(Lorg/hamcrest/Matcher;)C(Lorg/hamcrest/Matcher<*>;)CdoubleIs(Lorg/hamcrest/Matcher;)D(Lorg/hamcrest/Matcher<*>;)DfloatIs(Lorg/hamcrest/Matcher;)F(Lorg/hamcrest/Matcher<*>;)FintIs(Lorg/hamcrest/Matcher;)I(Lorg/hamcrest/Matcher<*>;)IlongIs(Lorg/hamcrest/Matcher;)J(Lorg/hamcrest/Matcher<*>;)JshortIs(Lorg/hamcrest/Matcher;)S(Lorg/hamcrest/Matcher<*>;)Sis*(Lorg/hamcrest/Matcher;)Ljava/lang/Object;4<T:Ljava/lang/Object;>(Lorg/hamcrest/Matcher<*>;)TT;
SourceFileExpectations.javaEnclosingMethod<  = >?org/jmock/Expectations$1java/lang/Objectorg/jmock/syntax/WithClauseorg/jmock/Expectations()V
access$0001(Lorg/jmock/Expectations;Lorg/hamcrest/Matcher;)V 
 4
*+<2B>*<2A><02> 4 
 T
*<2A>+<2B><03>
67 

 
 T
*<2A>+<2B><03>
;< 

 
 T
*<2A>+<2B><03>
@A 

 
 ! T
*<2A>+<2B><0E>
EF 

 
"#$ T
*<2A>+<2B> <0B>
JK 

 
%&' T
*<2A>+<2B><03>
OP 

 
()* T
*<2A>+<2B> <09>
TU 

 
+,- T
*<2A>+<2B><03>
YZ 

 
./0 T
*<2A>+<2B><01>
^_ 

 
12345
PK
<00><><EFBFBD><<3C> <0A><>11org/jmock/Expectations.class<73><73><EFBFBD><EFBFBD>1<01>
S
T


S S 
 S
S

    
 
!
"
#$
S%
S& '(
S)
#*
#+
#,
S- '.
S/
S0
S1

23
S4
56
78
9:
;<
=>
?@
AB
CD
0EF
2E
GHI
5
J
7KL
9
M
;NO
=EP
?QR
AS
ATU
DS
DTV
GWX
IWY
KZ
[\
N]
^
_
S`abcdefbuildersLjava/util/List; SignatureCLjava/util/List<Lorg/jmock/internal/InvocationExpectationBuilder;>;currentBuilder1Lorg/jmock/internal/InvocationExpectationBuilder;withLorg/jmock/syntax/WithClause;<init>()VCodeLineNumberTableLocalVariableTablethisLorg/jmock/Expectations;initialiseExpectationCapture#(Lorg/jmock/internal/Cardinality;)V cardinality Lorg/jmock/internal/Cardinality;buildExpectationsB(Lorg/jmock/api/Action;Lorg/jmock/internal/ExpectationCollector;)Vbuilderi$Ljava/util/Iterator; defaultActionLorg/jmock/api/Action; collector)Lorg/jmock/internal/ExpectationCollector;3()Lorg/jmock/internal/InvocationExpectationBuilder;%checkLastExpectationWasFullySpecifiedexactly$(I)Lorg/jmock/syntax/ReceiverClause;countIoneOf&(Ljava/lang/Object;)Ljava/lang/Object;
mockObjectLjava/lang/Object;LocalVariableTypeTableTT;<T:Ljava/lang/Object;>(TT;)TT;one
DeprecatedatLeastbetween%(II)Lorg/jmock/syntax/ReceiverClause;minCountmaxCountatMostallowing7(Lorg/hamcrest/Matcher;)Lorg/jmock/syntax/MethodClause;mockObjectMatcherLorg/hamcrest/Matcher;Lorg/hamcrest/Matcher<*>;:(Lorg/hamcrest/Matcher<*>;)Lorg/jmock/syntax/MethodClause;ignoringneveraddParameterMatcher(Lorg/hamcrest/Matcher;)Vmatcher(Lorg/hamcrest/Matcher<*>;)V*(Lorg/hamcrest/Matcher;)Ljava/lang/Object;Lorg/hamcrest/Matcher<TT;>;6<T:Ljava/lang/Object;>(Lorg/hamcrest/Matcher<TT;>;)TT;(Lorg/hamcrest/Matcher;)Z+Lorg/hamcrest/Matcher<Ljava/lang/Boolean;>;.(Lorg/hamcrest/Matcher<Ljava/lang/Boolean;>;)Z(Lorg/hamcrest/Matcher;)B(Lorg/hamcrest/Matcher<Ljava/lang/Byte;>;+(Lorg/hamcrest/Matcher<Ljava/lang/Byte;>;)B(Lorg/hamcrest/Matcher;)S)Lorg/hamcrest/Matcher<Ljava/lang/Short;>;,(Lorg/hamcrest/Matcher<Ljava/lang/Short;>;)S(Lorg/hamcrest/Matcher;)C-Lorg/hamcrest/Matcher<Ljava/lang/Character;>;0(Lorg/hamcrest/Matcher<Ljava/lang/Character;>;)C(Lorg/hamcrest/Matcher;)I+Lorg/hamcrest/Matcher<Ljava/lang/Integer;>;.(Lorg/hamcrest/Matcher<Ljava/lang/Integer;>;)I(Lorg/hamcrest/Matcher;)J(Lorg/hamcrest/Matcher<Ljava/lang/Long;>;+(Lorg/hamcrest/Matcher<Ljava/lang/Long;>;)J(Lorg/hamcrest/Matcher;)F)Lorg/hamcrest/Matcher<Ljava/lang/Float;>;,(Lorg/hamcrest/Matcher<Ljava/lang/Float;>;)F(Lorg/hamcrest/Matcher;)D*Lorg/hamcrest/Matcher<Ljava/lang/Double;>;-(Lorg/hamcrest/Matcher<Ljava/lang/Double;>;)D(Z)ZvalueZ(B)BB(S)SS(C)CC(I)I(J)JJ(F)FF(D)DDwill(Lorg/jmock/api/Action;)Vactionequal*(Ljava/lang/Object;)Lorg/hamcrest/Matcher;6<T:Ljava/lang/Object;>(TT;)Lorg/hamcrest/Matcher<TT;>;sameany)(Ljava/lang/Class;)Lorg/hamcrest/Matcher;typeLjava/lang/Class;Ljava/lang/Class<TT;>;I<T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;)Lorg/hamcrest/Matcher<TT;>;anything()Lorg/hamcrest/Matcher;3<T:Ljava/lang/Object;>()Lorg/hamcrest/Matcher<TT;>;aLjava/lang/Class<*>;@(Ljava/lang/Class<*>;)Lorg/hamcrest/Matcher<Ljava/lang/Object;>;RuntimeVisibleAnnotationsLjava/lang/Deprecated;anaNullaNonNull returnValue*(Ljava/lang/Object;)Lorg/jmock/api/Action;resultthrowException-(Ljava/lang/Throwable;)Lorg/jmock/api/Action; throwableLjava/lang/Throwable;returnIterator.(Ljava/util/Collection;)Lorg/jmock/api/Action;
collectionLjava/util/Collection;Ljava/util/Collection<*>;1(Ljava/util/Collection<*>;)Lorg/jmock/api/Action;+([Ljava/lang/Object;)Lorg/jmock/api/Action;items[Ljava/lang/Object;[TT;2<T:Ljava/lang/Object;>([TT;)Lorg/jmock/api/Action;returnEnumerationdoAll/([Lorg/jmock/api/Action;)Lorg/jmock/api/Action;actions[Lorg/jmock/api/Action;onConsecutiveCallswhen&(Lorg/jmock/internal/StatePredicate;)V predicate#Lorg/jmock/internal/StatePredicate;then(Lorg/jmock/internal/State;)VstateLorg/jmock/internal/State;
inSequence(Lorg/jmock/Sequence;)VsequenceLorg/jmock/Sequence; inSequences([Lorg/jmock/Sequence;)Varr$[Lorg/jmock/Sequence;len$ sequences
access$0001(Lorg/jmock/Expectations;Lorg/hamcrest/Matcher;)Vx0x1
SourceFileExpectations.java <00><00> abjava/util/ArrayList YZ ]^org/jmock/Expectations$1 InnerClasses ag _` vb/org/jmock/internal/InvocationExpectationBuilder hii jk lmn op qr stu jvjava/lang/IllegalStateExceptionlno expectations have been specified (did you forget to to specify the cardinality of the first expectation?) aw xby wz hi wx{ || {| <00>z <00>} <00>z <00>x |<00> <00>| <00><00> ]u~ <01> <00><00><01> <01><01> <01><01> <01><01> <01><01> <01><01> <01><01> <01> <01><00>org/hamcrest/core/IsEqual a<01>org/hamcrest/core/IsSame<01> <00><00>org/hamcrest/core/IsAnythingorg/hamcrest/core/IsInstanceOf a<01>org/hamcrest/core/IsNullorg/hamcrest/core/IsNot a<00>&org/jmock/lib/action/ReturnValueAction org/jmock/lib/action/ThrowAction a<01>)org/jmock/lib/action/ReturnIteratorAction a<01> a<01>,org/jmock/lib/action/ReturnEnumerationAction org/jmock/lib/action/DoAllAction a<01>#org/jmock/lib/action/ActionSequence,org/jmock/internal/InStateOrderingConstraint a<00> <01><01>(org/jmock/internal/ChangeStateSideEffect a<00> <01><01> <01><00> <00><00>org/jmock/Expectationsjava/lang/Object%org/jmock/internal/ExpectationBuilder"org/jmock/syntax/CardinalityClause*org/jmock/syntax/ArgumentConstraintPhrasesorg/jmock/syntax/ActionClause(Lorg/jmock/Expectations;)VsetCardinalityjava/util/Listadd(Ljava/lang/Object;)Ziterator()Ljava/util/Iterator;java/util/IteratorhasNext()Znext()Ljava/lang/Object; toExpectation3(Lorg/jmock/api/Action;)Lorg/jmock/api/Expectation;'org/jmock/internal/ExpectationCollector(Lorg/jmock/api/Expectation;)V(Ljava/lang/String;)VcheckWasFullySpecifiedorg/jmock/internal/Cardinality#(I)Lorg/jmock/internal/Cardinality;org/jmock/syntax/ReceiverClauseof$(II)Lorg/jmock/internal/Cardinality;java/lang/BooleanvalueOf(Z)Ljava/lang/Boolean;java/lang/Byte(B)Ljava/lang/Byte;java/lang/Short(S)Ljava/lang/Short;java/lang/Character(C)Ljava/lang/Character;java/lang/Integer(I)Ljava/lang/Integer;java/lang/Long(J)Ljava/lang/Long;java/lang/Float(F)Ljava/lang/Float;java/lang/Double(D)Ljava/lang/Double; setAction(Ljava/lang/Object;)Vorg/hamcrest/CoreMatchers(Ljava/lang/Class;)V(Ljava/lang/Throwable;)V(Ljava/util/Collection;)V([Ljava/lang/Object;)V([Lorg/jmock/api/Action;)VaddOrderingConstraint*(Lorg/jmock/internal/OrderingConstraint;)V addSideEffect"(Lorg/jmock/internal/SideEffect;)VaddInSequenceOrderingConstraint!STUVWXYZ[\]^_`9abcW!*<2A>*<2A>Y<><04>*<01>*<2A>Y*<2A><08> <09>d.124e !fghicj&*<2A>
*<2A> Y<> <0C>*<2A>+<2B> *<2A>*<2A><06>W<>deghi%je&fg&jklmc<00>2*<2A>
*<2A><05>N-<2D><00>-<2D><00> :,+<2B><12><00><><EFBFBD><EFBFBD>dmo"p1re4" n^#op2fg2qr2st]ucH*<2A><06> <0A>Y<15><16>*<2A><06>duvye fgvbcA*<2A><06>
*<2A><06><17>d}~<00>e fgwxcE *<1B><18>*<2A><06>d
<00><00>e fg yz{|cR *<04>+<2B><00>d<00>e fg }~  }<00>[<00><00>|cL*+<2B><1C>d<00>efg}~ }<00><00>[<00><00>xcE *<1B><1D>*<2A><06>d
<00><00>e fg yz<00><00>cP*<1C><1E>*<2A><06>d
<00> <00>e fg<00>z<00>z<00>xcE *<1B><1F>*<2A><06>d
<00><00>e fg yz<00><00>cR *<03> +<2B>!<00>d<00>e fg <00><00>  <00><00>[<00><00>|cR *<03> +<2B><00>d<00>e fg }~  }<00>[<00><00>|cL*+<2B>"<22>d<00>efg}~ }<00>[<00><00><00>cL*+<2B>#<23>d<00>efg<00><00> <00><00>[<00><00>|cR *<03>+<2B><00>d<00>e fg }~  }<00>[<00><00><00>cS *<2A>$+<2B>%<25>d
<00><00>e fg <00><00>  <00><00>[<00>_<00>cQ*+<2B><01>d
<00><00>efg<00><00> <00><00>[<00>_<00>cQ*+<2B><03>d
<00><00>efg<00><00> <00><00>[<00>_<00>cQ*+<2B><03>d
<00><00>efg<00><00> <00><00>[<00>_<00>cQ*+<2B><03>d
<00><00>efg<00><00> <00><00>[<00>_<00>cQ*+<2B><03>d
<00><00>efg<00><00> <00><00>[<00>_<00>cQ*+<2B><03>d
<00><00>efg<00><00> <00><00>[<00>_<00>cQ*+<2B> <09>d
<00><00>efg<00><00> <00><00>[<00>_<00>cQ*+<2B> <0B>d
<00><00>efg<00><00> <00><00>[<00>_<00>cQ*+<2B><0E>d
efg<00><00> <00><00>[<00>_<00>cE *<1B>&<26>'<27><03>d
 e fg <00><00>_<00>cE *<1B>(<28>'<27><03>d
  e fg <00><00>_<00>cE *<1B>)<29>'<27><03>d
 e fg <00><00>_<00>cE *<1B>*<2A>'<27><03>d
 e fg <00><00>_<00>cE *<1B>+<2B>'<27><03>d
 e fg <00>z_<00>cE *<1F>,<2C>'<27> <09>d
 !e fg <00><00>_<00>cE *#<23>-<2D>'<27> <0B>d
% &e fg <00><00>_<00>cE *'<27>.<2E>'<27><0E>d
* +e fg <00><00>_|cT
*+<2B>'<27>+<2B>d
/0e
fg
<00>~ 
<00><00>[<00><00><00>cA *<2A>$+<2B>/<2F>d
45e fg <00>r <00><00>cE <09>0Y*<2A>1<>d;e  <00>~  <00><00>[<00> <00><00>cE <09>2Y*<2A>3<>d?e  <00>~  <00><00>[<00> <00><00>cA*<2A>4<>dCe <00><00> <00><00>[<00> <00><00>c <08>5Y<35>6<>dG[<00> <00><00>cE <09>7Y*<2A>8<>dPe  <00><00>  <00><00><00>[<00><00><00> <00><00>cE <09>7Y*<2A>8<>dYe  <00><00>  <00><00><00>[<00><00><00> <00><00>cD<08>9Y<39>:<3A>d]e <00><00> <00><00>[<00> <00><00>cK<0F>;Y<>9Y<39>:<3A><<3C>dae <00><00> <00><00>[<00> <00><00>c3 <09>=Y*<2A>><3E>dhe  <00>~ <00><00>c3 <09>?Y*<2A>@<40>dle  <00><00> <00><00>cE <09>AY*<2A>B<>dpe  <00><00>  <00><00>[<00><00><00><00>cE <09>AY*<2A>C<>dte  <00><00>  <00><00>[<00> <00><00>cE <09>DY*<2A>E<>dxe  <00><00>  <00><00>[<00><00><00><00>cE <09>DY*<2A>F<>d|e  <00><00>  <00><00>[<00><00><00><00>c3 <09>GY*<2A>H<>d<01>e  <00><00><00><00><00>c3 <09>IY*<2A>J<>d<01>e  <00><00><00><00>cH*<2A>$<24>KY+<2B>L<>M<>d
<01><01>efg<00><00><00><00>cH*<2A>$<24>NY+<2B>O<>P<>d
<01><01>efg<00><00><00><00>cA *<2A>$+<2B>Q<>d
<01><01>e fg <00><00><00><00><00>c<00>!+M,<2C>>6<1D>,2:*<05>R<><01><><EFBFBD><EFBFBD>d<01><01><01> <01>e><00><00><00>zoz!fg!c:*+<2B><01>d.eg<00>
PK
<00><><EFBFBD><5_<35><5F>org/jmock/Mockery$1.class<73><73><EFBFBD><EFBFBD>11  
! "#
$%&'val$e Lorg/jmock/api/ExpectationError;this$0Lorg/jmock/Mockery;<init>6(Lorg/jmock/Mockery;Lorg/jmock/api/ExpectationError;)VCodeLineNumberTableLocalVariableTablethis InnerClassesLorg/jmock/Mockery$1;
describeTo(Lorg/hamcrest/Description;)V descriptionLorg/hamcrest/Description;
SourceFile Mockery.javaEnclosingMethod( )*
+, -. /0org/jmock/Mockery$1java/lang/Objectorg/hamcrest/SelfDescribingorg/jmock/MockerymismatchDescribingB(Lorg/jmock/api/ExpectationError;)Lorg/jmock/api/ExpectationError;()Vorg/jmock/api/ExpectationError
invocationLorg/jmock/api/Invocation;
access$000J(Lorg/jmock/Mockery;Lorg/jmock/api/Invocation;Lorg/hamcrest/Description;)V 
  9*+<2B>*,<2C>*<2A><03>
 H*<2A>*<2A><02>+<2B><05>
  
PK
<00><><EFBFBD><<3C><03><><EFBFBD><00>"org/jmock/Mockery$MockObject.class<73><73><EFBFBD><EFBFBD>1T 3
4 5 6
78
79:;
7<
=
>? @ABCDE
mockedTypeLjava/lang/Class; SignatureLjava/lang/Class<*>;nameLjava/lang/String;this$0Lorg/jmock/Mockery;<init>9(Lorg/jmock/Mockery;Ljava/lang/Class;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis
MockObject InnerClassesLorg/jmock/Mockery$MockObject;LocalVariableTypeTable)(Ljava/lang/Class<*>;Ljava/lang/String;)VtoString()Ljava/lang/String;invoke.(Lorg/jmock/api/Invocation;)Ljava/lang/Object;
invocationLorg/jmock/api/Invocation;
ExceptionsFcaptureExpectationTo;(Lorg/jmock/internal/ExpectationCapture;)Ljava/lang/Object;capture'Lorg/jmock/internal/ExpectationCapture;
SourceFile Mockery.java  G  H IJ KL1org/jmock/internal/ObjectMethodExpectationBouncer4org/jmock/internal/InvocationToExpectationTranslator MN O Pjava/lang/ClassQ RSorg/jmock/Mockery$MockObjectjava/lang/Objectorg/jmock/api/Invokable!org/jmock/internal/CaptureControljava/lang/Throwable()Vorg/jmock/Mockery
access$100A(Lorg/jmock/Mockery;Lorg/jmock/api/Invocation;)Ljava/lang/Object;
access$3001(Lorg/jmock/Mockery;)Lorg/jmock/api/Imposteriser;
access$200B(Lorg/jmock/Mockery;)Lorg/jmock/internal/ReturnDefaultValueAction;@(Lorg/jmock/internal/ExpectationCapture;Lorg/jmock/api/Action;)V(Lorg/jmock/api/Invokable;)Vorg/jmock/api/Imposteriser imposteriseP(Lorg/jmock/api/Invokable;Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/Object; p*+<2B>*<2A>*-<2D>*,<2C><04>  "# $%&/*<2A><03> "'(= *<2A>+<2B><05>" " )*+,-._+*<2A><01><06>Y<>Y+*<2A><01> <09>
<EFBFBD> *<2A><03> <0C> <00>&+"+/012!
7 PK
<00><><EFBFBD><<3C><1B><><EFBFBD> <00> org/jmock/Mockery.class<73><73><EFBFBD><EFBFBD>1L R<00> R<00>
R<00>
R<00>
S<00><00>
<00> R<00> <00><00> <00><00> R<00> <00><00> R<00><00>
<00> R<00><00>
<00><00>
<00> R<00> R<00><00>
<00> R<00>
<00>
<00> <00><00>
R<00> <00><00><00><00>
<00><00>
<00><00>
<00>
<00><00>
'<00> <00><00><00><00><00>
+<00>
*<00> <00><00><00> <00><00><00>
2<00>
<00> <00><00>
<00>
<00><00><00>
8<00> <00><00> <00><00>
R<00>
<00><00> <00><00>  <00>
<00> <00>
R
8
 
8 
M 8
8
8 
MockObject InnerClasses mockNamesLjava/util/Set; Signature#Ljava/util/Set<Ljava/lang/String;>; imposteriserLorg/jmock/api/Imposteriser;expectationErrorTranslator*Lorg/jmock/api/ExpectationErrorTranslator; namingScheme&Lorg/jmock/api/MockObjectNamingScheme;threadingPolicyLorg/jmock/api/ThreadingPolicy; defaultAction-Lorg/jmock/internal/ReturnDefaultValueAction;
dispatcher)Lorg/jmock/internal/InvocationDispatcher;
firstErrorLjava/lang/Error;actualInvocationsLjava/util/List;,Ljava/util/List<Lorg/jmock/api/Invocation;>;<init>()VCodeLineNumberTableLocalVariableTablethisLorg/jmock/Mockery;setDefaultResultForType&(Ljava/lang/Class;Ljava/lang/Object;)VtypeLjava/lang/Class;resultLjava/lang/Object;LocalVariableTypeTableLjava/lang/Class<*>;)(Ljava/lang/Class<*>;Ljava/lang/Object;)VsetImposteriser(Lorg/jmock/api/Imposteriser;)VsetNamingScheme)(Lorg/jmock/api/MockObjectNamingScheme;)VsetExpectationErrorTranslator-(Lorg/jmock/api/ExpectationErrorTranslator;)VsetThreadingPolicy"(Lorg/jmock/api/ThreadingPolicy;)Vmock%(Ljava/lang/Class;)Ljava/lang/Object;
typeToMockLjava/lang/Class<TT;>;1<T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;)TT;7(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;nameLjava/lang/String;Lorg/jmock/Mockery$MockObject; invokableLorg/jmock/api/Invokable;C<T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;Ljava/lang/String;)TT;sequence((Ljava/lang/String;)Lorg/jmock/Sequence;states&(Ljava/lang/String;)Lorg/jmock/States;checking*(Lorg/jmock/internal/ExpectationBuilder;)V expectations'Lorg/jmock/internal/ExpectationBuilder;addExpectation(Lorg/jmock/api/Expectation;)V expectationLorg/jmock/api/Expectation;assertIsSatisfied
describeTo(Lorg/hamcrest/Description;)V descriptionLorg/hamcrest/Description;describeMismatch7(Lorg/jmock/api/Invocation;Lorg/hamcrest/Description;)V
invocationLorg/jmock/api/Invocation;describeHistorydispatch.(Lorg/jmock/api/Invocation;)Ljava/lang/Object;e Lorg/jmock/api/ExpectationError;tLjava/lang/Throwable;
ExceptionsmismatchDescribingB(Lorg/jmock/api/ExpectationError;)Lorg/jmock/api/ExpectationError;filledIn
access$000J(Lorg/jmock/Mockery;Lorg/jmock/api/Invocation;Lorg/hamcrest/Description;)Vx0x1x2
access$100A(Lorg/jmock/Mockery;Lorg/jmock/api/Invocation;)Ljava/lang/Object;
access$200B(Lorg/jmock/Mockery;)Lorg/jmock/internal/ReturnDefaultValueAction;
access$3001(Lorg/jmock/Mockery;)Lorg/jmock/api/Imposteriser;
SourceFile Mockery.java [\ cd <00><00> <00><00> lmjava/util/HashSet WX \  ]^  _`'org/jmock/internal/SingleThreadedPolicy ab+org/jmock/internal/ReturnDefaultValueAction l}'org/jmock/internal/InvocationDispatcher ef ghjava/util/ArrayList ij t |}  <00><00>  "java/lang/IllegalArgumentExceptionjava/lang/StringBuildera mock with name !" already exists #$ l%org/jmock/Mockery$MockObject l& ' (org/jmock/internal/ProxiedObjectIdentity%org/jmock/internal/InvocationDiverter!org/jmock/internal/CaptureControl l( l)* +,java/lang/Class- ./ org/jmock/internal/NamedSequence 012 34 '<00> 56org/jmock/api/ExpectationError#not all expectations were satisfied l78 9:; <= <00><00>
what happened before this: >?@ A6 nothing!

BC <00><00> DEF GHjava/lang/Throwable I$org/jmock/Mockery$1 lJ <00><00> lKorg/jmock/Mockeryjava/lang/Objectorg/hamcrest/SelfDescribing(org/jmock/lib/JavaReflectionImposteriserINSTANCE0org/jmock/lib/IdentityExpectationErrorTranslator2Lorg/jmock/lib/IdentityExpectationErrorTranslator;#org/jmock/lib/CamelCaseNamingScheme%Lorg/jmock/lib/CamelCaseNamingScheme; addResult$org/jmock/api/MockObjectNamingSchemedefaultNameFor%(Ljava/lang/Class;)Ljava/lang/String; java/util/Setcontains(Ljava/lang/Object;)Zappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;toString()Ljava/lang/String;(Ljava/lang/String;)V9(Lorg/jmock/Mockery;Ljava/lang/Class;Ljava/lang/String;)Vadd?(Ljava/lang/Class;Ljava/lang/Object;Lorg/jmock/api/Invokable;)V(Lorg/jmock/api/Invokable;)Vorg/jmock/api/ThreadingPolicysynchroniseAccessTo4(Lorg/jmock/api/Invokable;)Lorg/jmock/api/Invokable;org/jmock/api/Imposteriser imposteriseP(Lorg/jmock/api/Invokable;Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/Object;newStateMachine5(Ljava/lang/String;)Lorg/jmock/internal/StateMachine;%org/jmock/internal/ExpectationBuilderbuildExpectationsB(Lorg/jmock/api/Action;Lorg/jmock/internal/ExpectationCollector;)V isSatisfied()Z2(Ljava/lang/String;Lorg/hamcrest/SelfDescribing;)V(org/jmock/api/ExpectationErrorTranslator translate3(Lorg/jmock/api/ExpectationError;)Ljava/lang/Error;org/hamcrest/DescriptionappendDescriptionOf9(Lorg/hamcrest/SelfDescribing;)Lorg/hamcrest/Description;
appendText.(Ljava/lang/String;)Lorg/hamcrest/Description;java/util/ListisEmpty
appendListf(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Iterable;)Lorg/hamcrest/Description; getStackTrace ()[Ljava/lang/StackTraceElement;java/lang/Error setStackTrace!([Ljava/lang/StackTraceElement;)V
getMessage6(Lorg/jmock/Mockery;Lorg/jmock/api/ExpectationError;)VL(Ljava/lang/String;Lorg/hamcrest/SelfDescribing;Lorg/jmock/api/Invocation;)V!RST WXYZ[\]^_`abcdefghijYklmn<00>Z*<2A>*<2A>Y<><07>*<2A> <09>*<2A>
<EFBFBD> *<2A> <0C> *<2A>Y<><0F>*<2A>Y*<2A><01><12>*<2A>Y<><14>*<01>*<2A>Y<><18><19>o. ./012$3/5>7I8N:Yp Zqrstn^
*<2A>+,<2C><1A>o
L Mp 
qr
uv
wxy 
uzY{|}nJ*+<2B>*<2A>+<2B><1B>oWX Ypqr[\~n>*+<2B> <0A>o
depqr_`<00><00>n>*+<2B> <0B>o
qrpqr]^<00><00>n>*+<2B><10>o
}~pqrab<00><00>nV*+*<2A> +<2B><00><1D>o<00>pqr<00>vy <00><00>Y<00><00><00>n<00>x*<2A>,<2C><00>#<23>Y<> Y<>!"<22>#,<2C>#$<24>#<23>%<25>&<26><>'Y*+,<2C>(N*<2A>,<2C>)W*<2A><10>*Y<>+Y,--<2D>-<2D>.<2E>/:*<2A>+<04>0Y,S<>1<00>o<00> <00>-<00>8<00>C<00>a<00>p4xqrx<00>vx<00><00>8@<00><00>a<00><00>y x<00><00>Y<00><00><00>n= <09>2Y+<2B>3<>o<00>p qr <00><00><00><00>n= *<2A>+<2B>4<>o<00>p qr <00><00><00><00>nG+*<2A>*<2A><15>5<00>o
<00><00>pqr<00><00><00><00>nA *<2A>+<2B>6<>o
<00><00>p qr <00><00><00>mne+*<2A><16>*<2A><16>*<2A><15>7<>*<2A> <0B>8Y9*<2A>:<3A>;<00><>o<00><00> <00><00>*<00>p +qr<00><00>nM+*<2A><15><W*+<2B>=<3D>o<00> <00><00>pqr<00><00><00><00>nU*<2A>+,<2C>>*,<2C>=<3D>o<00> <00><00>p qr<00><00><00><00><00><00>nw3+?<3F>@W*<2A><19>A<00>+B<>@W<>+CCD*<2A><19>EW<>o<00> <00><00>!<00>2<00>p3qr3<00><00><00><00>n<00>S*<2A><16>*<2A><16>*<2A>+<2B>FM*<2A>+<2B>GW,<2C>M**<2A> *,<2C>H<>;<00>*<2A>,<2C>I<>J*<2A><16>M*<2A>+<2B>GW,<2C> !"8 !EKo2 <00><00> <00><00> <00>"<00>#<00>5@EFQp4 wx#"<00><00>F <00><00>SqrS<00><00><00>K<00><00>ni#<23>8Y+<2B>L<>MY*+<2B>N+<2B>O<>PM,+<2B>I<>Q,<2C>o
!p #qr#<00><00>
<00><00><00><00>nE*+,<2C><04>o.p <00>r<00><00><00><00><00><00>n:*+<2B><03>o.p<00>r<00><00><00>K<00><00>n/*<2A><02>o.p <00>r<00><00>n/*<2A><01>o.p <00>r<00><00>V'RUMPK
<00><><EFBFBD>< ew<14><00>org/jmock/Sequence.class<73><73><EFBFBD><EFBFBD>1 constrainAsNextInSequence-(Lorg/jmock/internal/InvocationExpectation;)V
SourceFile Sequence.javaorg/jmock/Sequencejava/lang/ObjectPK
<00><><EFBFBD><]7q5org/jmock/States.class<73><73><EFBFBD><EFBFBD>1   startsAs&(Ljava/lang/String;)Lorg/jmock/States;become(Ljava/lang/String;)V
SourceFile States.javaorg/jmock/Statesjava/lang/Objectorg/hamcrest/SelfDescribingorg/jmock/syntax/StatesClause 
PK
<00><><EFBFBD><X<><58>m<EFBFBD><00>org/jmock/api/Action.class<73><73><EFBFBD><EFBFBD>1  

SourceFile Action.javaorg/jmock/api/Actionjava/lang/Objectorg/hamcrest/SelfDescribingorg/jmock/api/InvokablePK
<00><><EFBFBD><V<><56><EFBFBD><EFBFBD><00>org/jmock/api/Expectation.class<73><73><EFBFBD><EFBFBD>1 isSatisfied()ZallowsMoreInvocationsmatches(Lorg/jmock/api/Invocation;)ZdescribeMismatch7(Lorg/jmock/api/Invocation;Lorg/hamcrest/Description;)Vinvoke.(Lorg/jmock/api/Invocation;)Ljava/lang/Object;
Exceptions
SourceFileExpectation.javaorg/jmock/api/Expectationjava/lang/Objectorg/hamcrest/SelfDescribingjava/lang/Throwable
  PK
<00><><EFBFBD><<3C><><06>$org/jmock/api/ExpectationError.class<73><73><EFBFBD><EFBFBD>1>
& ' (
)
*+
, -./
012 1345 expectationsLorg/hamcrest/SelfDescribing;
invocationLorg/jmock/api/Invocation;<init>L(Ljava/lang/String;Lorg/hamcrest/SelfDescribing;Lorg/jmock/api/Invocation;)VCodeLineNumberTableLocalVariableTablethis Lorg/jmock/api/ExpectationError;messageLjava/lang/String;/(Ljava/lang/String;Lorg/jmock/api/Invocation;)V2(Ljava/lang/String;Lorg/hamcrest/SelfDescribing;)VtoString()Ljava/lang/String;
describeTo(Lorg/hamcrest/Description;)V descriptionLorg/hamcrest/Description;
SourceFileExpectationError.java 6   7 8 9: ;<: = !
org/jmock/api/ExpectationErrorjava/lang/Errororg/hamcrest/SelfDescribing(Ljava/lang/String;)Vorg/hamcrest/StringDescription1(Lorg/hamcrest/SelfDescribing;)Ljava/lang/String;
getMessageorg/hamcrest/Description
appendText.(Ljava/lang/String;)Lorg/hamcrest/Description;org/jmock/api/Invocation! d*+<2B>*-<2D>*,<2C><03>
*J*+,<2C><04>
 J*+,<01><04>
 /*<2A><05>   !<00>>+*<2A><06>W*<2A><02>+<08>W*<2A>+<2B> *<2A><03>+
<EFBFBD>W*<2A>+<2B> <00>"$ %&'#)**3+=->>"#$%PK
<00><><EFBFBD><<3C><>~<7E><><00>.org/jmock/api/ExpectationErrorTranslator.class<73><73><EFBFBD><EFBFBD>1  translate3(Lorg/jmock/api/ExpectationError;)Ljava/lang/Error;
SourceFileExpectationErrorTranslator.java(org/jmock/api/ExpectationErrorTranslatorjava/lang/ObjectPK
<00><><EFBFBD><<3C><00><0F><00> org/jmock/api/Imposteriser.class<73><73><EFBFBD><EFBFBD>1  canImposterise(Ljava/lang/Class;)Z Signature(Ljava/lang/Class<*>;)Z imposteriseP(Lorg/jmock/api/Invokable;Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/Object;_<T:Ljava/lang/Object;>(Lorg/jmock/api/Invokable;Ljava/lang/Class<TT;>;[Ljava/lang/Class<*>;)TT;
SourceFileImposteriser.javaorg/jmock/api/Imposteriserjava/lang/Object<04> 
 PK
<00><><EFBFBD><<3C><><EFBFBD><EFBFBD><EFBFBD><00> org/jmock/api/Invocation$1.class<73><73><EFBFBD><EFBFBD>16
$ %&
' %( %)
%* %+ %, %- %./0<init>()VCodeLineNumberTableLocalVariableTablethis InnerClassesLorg/jmock/api/Invocation$1; Signature=Ljava/util/HashMap<Ljava/lang/Class<*>;Ljava/lang/Class<*>;>;
SourceFileInvocation.javaEnclosingMethod1  23java/lang/Boolean 45java/lang/Bytejava/lang/Characterjava/lang/Shortjava/lang/Integerjava/lang/Longjava/lang/Floatjava/lang/Doubleorg/jmock/api/Invocation$1java/util/HashMaporg/jmock/api/InvocationTYPELjava/lang/Class;put8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;0<00>]*<2A>*<2A><03>W*<2A><06>W*<2A><08>W*<2A> 
<EFBFBD>W*<2A>  <0C>W*<2A> <0E>W*<2A><10>W*<2A><12>W<>*
 %!0";#F$Q%\& ] !"#
PK
<00><><EFBFBD><9<><39>_<EFBFBD><00>org/jmock/api/Invocation.class<73><73><EFBFBD><EFBFBD>1<00>
<00> <00> <00> <00><00>
<00><00>< <00><00>
<00>
<00>
<00><00>
<00><00><00>
<00><00>
<00>
<00><00>
<00><00>
<00>
<00><00>
<00><00> <00><00><00>
<00><00><00><00><00> <00><00>
<00><00>
<00>
<00><00><00>
"<00>
<00><00> <00><00>
<00>
<00>
<00>
<00>
<00>
<00><00>
<00>
<00><00> <00> <00><00><00><00>
<00>
0<00><00>
<00><00><00><00><00>
8<00><00> NO_PARAMETERS[Ljava/lang/Object; invokedObjectLjava/lang/Object; invokedMethodLjava/lang/reflect/Method;parameterValues BOX_TYPESLjava/util/Map; Signature9Ljava/util/Map<Ljava/lang/Class<*>;Ljava/lang/Class<*>;>;<init>B(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)VCodeLineNumberTableLocalVariableTablethisLorg/jmock/api/Invocation;invokedmethodtoString()Ljava/lang/String;equals(Ljava/lang/Object;)Zother(Lorg/jmock/api/Invocation;)ZhashCode()I
describeTo(Lorg/hamcrest/Description;)V descriptionLorg/hamcrest/Description;getInvokedObject()Ljava/lang/Object;getInvokedMethod()Ljava/lang/reflect/Method;getParameterCount getParameter(I)Ljava/lang/Object;iIgetParametersAsArray()[Ljava/lang/Object;applyTo&(Ljava/lang/Object;)Ljava/lang/Object;ex-Ljava/lang/reflect/InvocationTargetException;target
Exceptions<00>checkReturnTypeCompatibility(Ljava/lang/Object;)V valueTypeLjava/lang/Class;value
returnTypeLocalVariableTypeTableLjava/lang/Class<*>; isCompatible%(Ljava/lang/Class;Ljava/lang/Class;)Z+(Ljava/lang/Class<*>;Ljava/lang/Class<*>;)Z isBoxedType primitiveType referenceTypefailIfReturnTypeIsNotNullresultfailIfReturnTypeIsPrimitive()VreportTypeError%(Ljava/lang/Class;Ljava/lang/Class;)V+(Ljava/lang/Class<*>;Ljava/lang/Class<*>;)V<clinit>
SourceFileInvocation.java F~ => ?@ ;<java/lang/Object< <00>\ A<java/lang/StringBuilder OP <00><00>[<00> O<00>]org/jmock/api/Invocation QT<00> QR<00> Q<00> UV U<00><00> <00><00>. <00>P(, ) <00><00>< de <00><00>+java/lang/reflect/InvocationTargetException <00><00> <00><00><00> <00>p {n }~ <00><00> uv <00><00> <00><00> xv <00><00> BC<00> <00>gjava/lang/IllegalStateException,tried to return a value from a void method: <00><00> F<00>1tried to return null value from method returning tried to return a & from a method that can only return a org/jmock/api/Invocation$1 InnerClassesorg/hamcrest/SelfDescribingjava/lang/Throwablecloneappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;org/hamcrest/StringDescription1(Lorg/hamcrest/SelfDescribing;)Ljava/lang/String;java/lang/reflect/Methodjava/util/Arrays)([Ljava/lang/Object;[Ljava/lang/Object;)Z([Ljava/lang/Object;)Iorg/hamcrest/Description
appendText.(Ljava/lang/String;)Lorg/hamcrest/Description;getNameappendValueListe(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)Lorg/hamcrest/Description;invoke9(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;getTargetException()Ljava/lang/Throwable; getReturnType()Ljava/lang/Class;java/lang/VoidTYPEgetClassjava/lang/Class isPrimitive()ZisAssignableFrom(Ljava/lang/Class;)Z java/util/Mapget-(Ljava/lang/Object;)Ljava/lang/StringBuilder;(Ljava/lang/String;)V!:;<=>?@A<BCDE<00>FGH<00>(*<2A>*+<2B>*,<2C>*-<2D><04>
<03><05>
-<2D><06><07><08>I)* +,'/J*(KL(M>(N@(A<OPHM#<23> Y<>
*<2A> <0B>  <0A> *<2A><0E> <0F> <0C><10>I3J #KLQRHL+<2B><11>*+<2B><11><12><04><03>I8JKLS>QTHe1+<2B>.*<2A>+<2B><02>#*<2A>+<2B><03><13>*<2A>+<2B><08><14><04><03>I<J1KL1SLUVHB*<2A><02>*<2A><03><16>*<2A><08><17><>ICJ KLWXH{7+*<2A><02> <0B>W+<19>W+*<2A><03><1A>W+*<2A><08>W<>IIJK%L6MJ7KL7YZ[\H/*<2A><02>IPJ KL]^H/*<2A><03>ITJ KL_VH0*<2A><08><>IXJ KL`aH;*<2A>2<>I\JKLbcdeH5 *<2A><08><1F><07>I`J  KLfgHa*<2A>+*<2A> <20>!<21>M,<2C>#<23> "Ie ghJ hiKLj>klmnH<00>7*<2A><03>$M,<2C>%<25> *+<2B>&<26>"+<2B>
*<2A>'<27>+<2B>(N*,-<2D>)<29> *,-<2D>*<2A>I& mnoqr"u'v0w6zJ*'op7KL7q>/rps'ot/rtuvHv+<2B>+<2B>
*+,<2C>,<2C>+,<2C>-<2D>I}<00>J KLrpopsrtotDwxvHm<13>.+<2B>/,<2C><04><03>I<00>J KLypzpsytztDw{nH\ +<2B><1E>0Y<30> Y<>
1<> +<2B>2<><10>3<><33>I<00><00><00>J KL |>}~H<00>.*<2A><03>$L+<2B>+<2B>!<21>0Y<30> Y<>
4<> +<2B>5<> <0C><10>3<><33>I<00><00><00>-<00>J.KL&rps &rt<00>H<00>*<2A>0Y<30> Y<>
6<> ,<2C>5<> 7<> +<2B>5<> <0C><10>3<>I<00>J *KL*rp*ops*rt*otD<00><00>~H+<01><04>8Y<38>9<>.<2E>I
<00><00><00>
8PK
<00><><EFBFBD><bv<><76><00>org/jmock/api/Invokable.class<73><73><EFBFBD><EFBFBD>1  
invoke.(Lorg/jmock/api/Invocation;)Ljava/lang/Object;
Exceptions 
SourceFileInvokable.javaorg/jmock/api/Invokablejava/lang/Objectjava/lang/ThrowablePK
<00><><EFBFBD><<3C>-  *org/jmock/api/MockObjectNamingScheme.class<73><73><EFBFBD><EFBFBD>1  
defaultNameFor%(Ljava/lang/Class;)Ljava/lang/String; Signature((Ljava/lang/Class<*>;)Ljava/lang/String;
SourceFileMockObjectNamingScheme.java$org/jmock/api/MockObjectNamingSchemejava/lang/ObjectPK
<00><><EFBFBD><v}<7D><><00>#org/jmock/api/ThreadingPolicy.class<73><73><EFBFBD><EFBFBD>1 synchroniseAccessTo4(Lorg/jmock/api/Invokable;)Lorg/jmock/api/Invokable;
SourceFileThreadingPolicy.javaorg/jmock/api/ThreadingPolicyjava/lang/ObjectPK
<00><><EFBFBD><(,<2C>wworg/jmock/auto/Auto.class<73><73><EFBFBD><EFBFBD>1
SourceFile Auto.javaRuntimeVisibleAnnotations Ljava/lang/annotation/Retention;value&Ljava/lang/annotation/RetentionPolicy;RUNTIMELjava/lang/annotation/Target;"Ljava/lang/annotation/ElementType;FIELDorg/jmock/auto/Autojava/lang/Objectjava/lang/annotation/Annotation&e
[e PK
<00><><EFBFBD><<3C>7X<37>wworg/jmock/auto/Mock.class<73><73><EFBFBD><EFBFBD>1
SourceFile Mock.javaRuntimeVisibleAnnotations Ljava/lang/annotation/Retention;value&Ljava/lang/annotation/RetentionPolicy;RUNTIMELjava/lang/annotation/Target;"Ljava/lang/annotation/ElementType;FIELDorg/jmock/auto/Mockjava/lang/Objectjava/lang/annotation/Annotation&e
[e PK
<00><><EFBFBD><<0E>L<EFBFBD><4C> <00> (org/jmock/auto/internal/Mockomatic.class<73><73><EFBFBD><EFBFBD>1<00>
*U )V
*W
XY
)Z [\ ]^ ]_`a
b
)cd
)e
f
g
hij
Uk
l
m
)no
)pq
)rst
ug
v
hwx
hyz
{
|}~
<00><00>mockeryLorg/jmock/Mockery;<init>(Lorg/jmock/Mockery;)VCodeLineNumberTableLocalVariableTablethis$Lorg/jmock/auto/internal/Mockomatic;fillIn(Ljava/lang/Object;)VobjectLjava/lang/Object;%(Ljava/lang/Object;Ljava/util/List;)VfieldLjava/lang/reflect/Field;i$Ljava/util/Iterator; knownFieldsLjava/util/List;LocalVariableTypeTable+Ljava/util/List<Ljava/lang/reflect/Field;>; Signature@(Ljava/lang/Object;Ljava/util/List<Ljava/lang/reflect/Field;>;)VautoMock.(Ljava/lang/Object;Ljava/lang/reflect/Field;)VautoInstantiatetypeLjava/lang/Class;Ljava/lang/Class<*>;autoInstantiateStates.(Ljava/lang/reflect/Field;Ljava/lang/Object;)VautoInstantiateSequence setAutoFieldR(Ljava/lang/reflect/Field;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/String;)Ve"Ljava/lang/IllegalAccessException;value descriptionLjava/lang/String;
SourceFileMockomatic.java -<00> +, <00><00><00> <00><00> 48<00> <00><00><00> <00><00> <00><00>java/lang/reflect/Fieldorg/jmock/auto/Mock <00><00> CDorg/jmock/auto/Auto ED <00><00> <00><00><00> <00><00>java/lang/StringBuilderauto-mock field <00><00> <00><00> LMorg/jmock/States IJorg/jmock/Sequence KJjava/lang/IllegalStateException&cannot auto-instantiate field of type <00> -<00> <00><00>auto-instantiate States field <00><00> auto-instantiate Sequence field <00><00> <00><00> java/lang/IllegalAccessExceptioncannot -<00>"org/jmock/auto/internal/Mockomaticjava/lang/Object()VgetClass()Ljava/lang/Class;$org/jmock/internal/AllDeclaredFieldsin#(Ljava/lang/Class;)Ljava/util/List;java/util/Listiterator()Ljava/util/Iterator;java/util/IteratorhasNext()Znext()Ljava/lang/Object;isAnnotationPresent(Ljava/lang/Class;)ZgetTypegetName()Ljava/lang/String;org/jmock/Mockerymock7(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;append-(Ljava/lang/String;)Ljava/lang/StringBuilder;toStringjava/lang/Class(Ljava/lang/String;)Vstates&(Ljava/lang/String;)Lorg/jmock/States;sequence((Ljava/lang/String;)Lorg/jmock/Sequence; setAccessible(Z)Vset'(Ljava/lang/Object;Ljava/lang/Object;)V*(Ljava/lang/String;Ljava/lang/Throwable;)V!)*+,-./F
*<2A>*+<2B><02>0 1
23
+,45/E *++<2B><03><04><05>0
 1 23 6748/<00>F,<2C>N-<2D><00>8-<2D><00> :
<EFBFBD> <0B> *+<04> <0C> <0A> <0B>
*+<04><0E><>ű0&0;E"14'9:>;<F23F67F=>? F=@ABCD/n,*,+*<2A>,<2C>,<2C><10><11>Y<><14>,<2C><10><15><16><17>0
%+(1 ,23,67,9:ED/<00>D,<2C>N-<18> *,+<2B><19>1-<1A> *,+<2B><1B>!<21>Y<>Y<><1D>-<2D><1E><15><16><1F><>0+, -/0%3C51*D23D67D9:?FG? ?FHIJ/j(*+,*<2A>+<2B><10> <20>Y<>!<21>+<2B><10><15><16><17>0
8';1 (23(9:(67KJ/j(*+,*<2A>+<2B><10>"<22>Y<>#<23>+<2B><10><15><16><17>0
>'A1 (23(9:(67LM/<00>/+<04>$+,-<2D>%<25>#:<05>Y<>Y<>'<27><04><15><05>(<28><> &0EF JHI.K1>NO/23/9:/67/P7/QRSTPK
<00><><EFBFBD><uez<65>***org/jmock/internal/AllDeclaredFields.class<73><73><EFBFBD><EFBFBD>13

!
"#
$%
&
"'(<init>()VCodeLineNumberTableLocalVariableTablethis&Lorg/jmock/internal/AllDeclaredFields;in#(Ljava/lang/Class;)Ljava/util/List;cLjava/lang/Class;clazzfieldsLjava/util/ArrayList;LocalVariableTypeTableLjava/lang/Class<*>;0Ljava/util/ArrayList<Ljava/lang/reflect/Field;>; SignatureA(Ljava/lang/Class<*>;)Ljava/util/List<Ljava/lang/reflect/Field;>;
SourceFileAllDeclaredFields.java
java/util/ArrayListjava/lang/Object) *+, -. /0 12$org/jmock/internal/AllDeclaredFieldsjava/lang/ClassgetDeclaredFields()[Ljava/lang/reflect/Field;java/util/ArraysasList%([Ljava/lang/Object;)Ljava/util/List;addAll(Ljava/util/Collection;)Z getSuperclass()Ljava/lang/Class;! 
 /*<2A><01>     <00>'<27>Y<>L*M,<04>+,<2C><05><06>W,<2C>M<><4D><EFBFBD>+<2B>     % 
' 
'PK
<00><><EFBFBD><<3C>i<><69><00>'org/jmock/internal/CaptureControl.class<73><73><EFBFBD><EFBFBD>1 captureExpectationTo;(Lorg/jmock/internal/ExpectationCapture;)Ljava/lang/Object;
SourceFileCaptureControl.java!org/jmock/internal/CaptureControljava/lang/ObjectPK
<00><><EFBFBD><<3C>^)$<24><00>$org/jmock/internal/Cardinality.class<73><73><EFBFBD><EFBFBD>1V
6 7 8
9<><7F><EFBFBD>:
;< =>?@AB
CDEF
GHI
J KLMALLOWING Lorg/jmock/internal/Cardinality;requiredImaximum<init>(II)VCodeLineNumberTableLocalVariableTablethisexactly#(I)Lorg/jmock/internal/Cardinality;countatLeastbetween$(II)Lorg/jmock/internal/Cardinality;atMost isSatisfied(I)ZinvocationsSoFarallowsMoreInvocationsinvocationCount
describeTo(Lorg/hamcrest/Description;)V descriptionLorg/hamcrest/Description;<clinit>()V
SourceFileCardinality.java 3   &'org/jmock/internal/Cardinality allowedN OP expected neveronceexactly Q RS at least at most T US to %# java/lang/Objectorg/hamcrest/SelfDescribingorg/hamcrest/Description
appendText.(Ljava/lang/String;)Lorg/hamcrest/Description;org/jmock/internal/Formattingtimes(I)Ljava/lang/String;java/lang/IntegertoString! Y*<2A>*<1B>*<1C><03>  ! "#0<1A><04> $ %#1<05><04>  &'>
<EFBFBD>Y<1B><07> 

 (#0<1A><04>$ )*B*<2A><1B><04><03>( !+,*B*<2A><03><04><03>, !-./j<00>*<2A><02>*<2A><05>+<08> W<><00>+
<EFBFBD> W*<2A><02>*<2A><03>+ <0B> W<><00>*<2A><04>*<2A><04>+ <0C> W<><00>*<2A>*<2A><03>+ <0A> W+*<2A><02><0E> W<>l*<2A><05>+<0F> W+*<2A><02><0E> W<>I*<2A><02>+<10> W+*<2A><03><0E> W<>(+*<2A><02><11> W+<12> W+*<2A><03><0E> W<>R014%637?9O:[<f=o><00>@<00>A<00>B<00>D<00>E<00>F<00>I<00>J<00>K<00>N <00>!<00>0123 <03><13><14> 45PK
<00><><EFBFBD><<3C>a<EFBFBD>F<EFBFBD><00>.org/jmock/internal/ChangeStateSideEffect.class<73><73><EFBFBD><EFBFBD>1+
   ! "#$%stateLorg/jmock/internal/State;<init>(Lorg/jmock/internal/State;)VCodeLineNumberTableLocalVariableTablethis*Lorg/jmock/internal/ChangeStateSideEffect;perform()V
describeTo(Lorg/hamcrest/Description;)V descriptionLorg/hamcrest/Description;
SourceFileChangeStateSideEffect.java 
& 'then ( )* (org/jmock/internal/ChangeStateSideEffectjava/lang/Objectorg/jmock/internal/SideEffectorg/jmock/internal/Stateactivateorg/hamcrest/Description
appendText.(Ljava/lang/String;)Lorg/hamcrest/Description;! 
 F
*<2A>*+<2B><02>


8
*<2A><02><00>
  
P+<04>W*<2A>+<2B><00> PK
<00><><EFBFBD><,<2C><>m<EFBFBD><00>+org/jmock/internal/ExpectationBuilder.class<73><73><EFBFBD><EFBFBD>1 buildExpectationsB(Lorg/jmock/api/Action;Lorg/jmock/internal/ExpectationCollector;)V
SourceFileExpectationBuilder.java%org/jmock/internal/ExpectationBuilderjava/lang/ObjectPK
<00><><EFBFBD><<3C><>!<21><><00>+org/jmock/internal/ExpectationCapture.class<73><73><EFBFBD><EFBFBD>1 createExpectationFrom(Lorg/jmock/api/Invocation;)V
SourceFileExpectationCapture.java%org/jmock/internal/ExpectationCapturejava/lang/ObjectPK
<00><><EFBFBD><c<1D><><00>-org/jmock/internal/ExpectationCollector.class<73><73><EFBFBD><EFBFBD>1 add(Lorg/jmock/api/Expectation;)V
SourceFileExpectationCollector.java'org/jmock/internal/ExpectationCollectorjava/lang/ObjectPK
<00><><EFBFBD><X<>j<10> <00> *org/jmock/internal/FakeObjectMethods.class<73><73><EFBFBD><EFBFBD>1<00>
K L
M
NO PQRS
T
NU
V
PWX*
Y ZQ[\
N]
^
Z_ `Qa
b c
de
f
dg
f
dh
ijklnextLorg/jmock/api/Invokable;<init>(Lorg/jmock/api/Invokable;)VCodeLineNumberTableLocalVariableTablethis&Lorg/jmock/internal/FakeObjectMethods;toString()Ljava/lang/String;invoke.(Lorg/jmock/api/Invocation;)Ljava/lang/Object;
invocationLorg/jmock/api/Invocation;methodLjava/lang/reflect/Method;
Exceptionsm fakeHashCode(Ljava/lang/Object;)I fakeToString&(Ljava/lang/Object;)Ljava/lang/String;
fakeEquals'(Ljava/lang/Object;Ljava/lang/Object;)Z fakeFinalize(Ljava/lang/Object;)VisMethodR(Ljava/lang/reflect/Method;Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Z
returnTypeLjava/lang/Class;nameLjava/lang/String;parameterTypes[Ljava/lang/Class;LocalVariableTypeTableLjava/lang/Class<*>;[Ljava/lang/Class<*>; SignatureX(Ljava/lang/reflect/Method;Ljava/lang/Class<*>;Ljava/lang/String;[Ljava/lang/Class<*>;)Z
SourceFileFakeObjectMethods.java #n !" *+o pqr s?hashCodejava/lang/Class <= tu 45 vwjava/lang/String 67xequalsjava/lang/Object yz 89 v{|finalize :; ,-} ~ [<00> <00>+ <00><00><00> [<00>$org/jmock/internal/FakeObjectMethodsorg/jmock/api/Invokablejava/lang/Throwable()Vorg/jmock/api/InvocationgetInvokedMethod()Ljava/lang/reflect/Method;java/lang/IntegerTYPEgetInvokedObject()Ljava/lang/Object;valueOf(I)Ljava/lang/Integer;java/lang/Boolean getParameter(I)Ljava/lang/Object;(Z)Ljava/lang/Boolean;java/lang/Voidjava/lang/reflect/Method getReturnType()Ljava/lang/Class;(Ljava/lang/Object;)ZgetNamegetParameterTypes()[Ljava/lang/Class;java/util/Arrays)([Ljava/lang/Object;[Ljava/lang/Object;)Z! !"#$%F
*<2A>*+<2B><02>&  '
()
!"*+%2*<2A><02><03>&' (),-%<00><00>+<2B>M*,<2C><03><07><08>*+<2B> <09>
<EFBFBD> <0B>*,  <03><07><08> *+<2B> <09><0E>*,<2C><04>YS<><08>*+<2B> +<03><12><13><14>*,<2C><03><07><08> *+<2B> <09><01>*<2A>+<2B><00>&. "3<Sd!u"}#&' <00>()<00>./<00>0123456789:;<00><=%<00>(+<2B>,<2C><1A>+<2B>-<2D><1C>+<2B><04><1E><04><03>&3'4(()(01(>?(@A(BCD(>E(BFGHIJPK
<00><><EFBFBD><<3C><>2<EFBFBD>vv#org/jmock/internal/Formatting.class<73><73><EFBFBD><EFBFBD>1'




 !<init>()VCodeLineNumberTableLocalVariableTablethisLorg/jmock/internal/Formatting;times(I)Ljava/lang/String;iI
SourceFileFormatting.java java/lang/StringBuilder "# "$time %&org/jmock/internal/Formattingjava/lang/Objectappend(I)Ljava/lang/StringBuilder;-(Ljava/lang/String;)Ljava/lang/StringBuilder;toString()Ljava/lang/String;!
 /*<2A><01>  M#<23>Y<><1A><05><04><07><08><06> <09> #PK
<00><><EFBFBD><0ĵ<12><00>2org/jmock/internal/InStateOrderingConstraint.class<73><73><EFBFBD><EFBFBD>1,
   ! "#$%statePredicate#Lorg/jmock/internal/StatePredicate;<init>&(Lorg/jmock/internal/StatePredicate;)VCodeLineNumberTableLocalVariableTablethis.Lorg/jmock/internal/InStateOrderingConstraint;allowsInvocationNow()Z
describeTo(Lorg/hamcrest/Description;)V descriptionLorg/hamcrest/Description;
SourceFileInStateOrderingConstraint.java &
' (when ) *+ ,org/jmock/internal/InStateOrderingConstraintjava/lang/Object%org/jmock/internal/OrderingConstraint()V!org/jmock/internal/StatePredicateisActiveorg/hamcrest/Description
appendText.(Ljava/lang/String;)Lorg/hamcrest/Description;! 
 F
*<2A>*+<2B><02>


4
*<2A><02><00>  
P+<04>W*<2A>+<2B><00> PK
<00><><EFBFBD><z)f<><00>3org/jmock/internal/InvocationDispatcher$1$1$1.class<73><73><EFBFBD><EFBFBD>1<
! " #$ %&' #( )*+,this$2- InnerClasses-Lorg/jmock/internal/InvocationDispatcher$1$1;<init>0(Lorg/jmock/internal/InvocationDispatcher$1$1;)VCodeLineNumberTableLocalVariableTablethis/Lorg/jmock/internal/InvocationDispatcher$1$1$1;
describeTo(Lorg/hamcrest/Description;)V descriptionLorg/hamcrest/Description;
SourceFileInvocationDispatcher.javaEnclosingMethod ./  0 123 456 .7org/jmock/api/Expectation 89 :;-org/jmock/internal/InvocationDispatcher$1$1$1java/lang/Objectorg/hamcrest/SelfDescribing+org/jmock/internal/InvocationDispatcher$1$1next()Lorg/hamcrest/SelfDescribing;()Vthis$1+Lorg/jmock/internal/InvocationDispatcher$1;)org/jmock/internal/InvocationDispatcher$1 val$iteratorLjava/util/Iterator;java/util/Iterator()Ljava/lang/Object;val$invocationLorg/jmock/api/Invocation;describeMismatch7(Lorg/jmock/api/Invocation;Lorg/hamcrest/Description;)V
  4
*+<2B>*<2A><02>* 
[#*<2A><01><03><04><00>*<2A><01><03>+<2B><00>
,"-##  #PK
<00><><EFBFBD><Xÿ1org/jmock/internal/InvocationDispatcher$1$1.class<73><73><EFBFBD><EFBFBD>16 %
& ' ()
* +
,-./this$10 InnerClasses+Lorg/jmock/internal/InvocationDispatcher$1;<init>.(Lorg/jmock/internal/InvocationDispatcher$1;)VCodeLineNumberTableLocalVariableTablethis-Lorg/jmock/internal/InvocationDispatcher$1$1;hasNext()Znext()Lorg/hamcrest/SelfDescribing;remove()V()Ljava/lang/Object; SignatureELjava/lang/Object;Ljava/util/Iterator<Lorg/hamcrest/SelfDescribing;>;
SourceFileInvocationDispatcher.javaEnclosingMethod 12   34 -org/jmock/internal/InvocationDispatcher$1$1$1 5  +org/jmock/internal/InvocationDispatcher$1$1java/lang/Objectjava/util/Iterator)org/jmock/internal/InvocationDispatcher$1iterator()Ljava/util/Iterator; val$iteratorLjava/util/Iterator;0(Lorg/jmock/internal/InvocationDispatcher$1$1;)V
  4
*+<2B>*<2A><02>' 
7 *<2A><01><03><00>(  3 <09>Y*<2A><06>*  7 *<2A><01><03><00>0  A/*<2A><08>'  !"# $ PK
<00><><EFBFBD><I<><49>6<EFBFBD><00>/org/jmock/internal/InvocationDispatcher$1.class<73><73><EFBFBD><EFBFBD>11 # $ %
&'
()*+ val$iteratorLjava/util/Iterator;val$invocationLorg/jmock/api/Invocation;this$0)Lorg/jmock/internal/InvocationDispatcher;<init>Z(Lorg/jmock/internal/InvocationDispatcher;Ljava/util/Iterator;Lorg/jmock/api/Invocation;)VCodeLineNumberTableLocalVariableTablethis InnerClasses+Lorg/jmock/internal/InvocationDispatcher$1;iterator()Ljava/util/Iterator; Signature5()Ljava/util/Iterator<Lorg/hamcrest/SelfDescribing;>;ELjava/lang/Object;Ljava/lang/Iterable<Lorg/hamcrest/SelfDescribing;>;
SourceFileInvocationDispatcher.javaEnclosingMethod, -. 
/+org/jmock/internal/InvocationDispatcher$1$1 0)org/jmock/internal/InvocationDispatcher$1java/lang/Objectjava/lang/Iterable'org/jmock/internal/InvocationDispatcher describedWith@(Ljava/util/List;Lorg/jmock/api/Invocation;)Ljava/lang/Iterable;()V.(Lorg/jmock/internal/InvocationDispatcher$1;)V  
 >*+<2B>*,<2C>*-<2D>*<2A><04>% 3 <09>Y*<2A><06>'   !"PK
<00><><EFBFBD><v <0A>Ȏ<00>-org/jmock/internal/InvocationDispatcher.class<73><73><EFBFBD><EFBFBD>1<00>
!YZ
Y [ \]
^ _`
a
b _cd
g _hi jklme jno _c pq prs t u vwx
yz{|} expectationsLjava/util/List; Signature-Ljava/util/List<Lorg/jmock/api/Expectation;>; stateMachines3Ljava/util/List<Lorg/jmock/internal/StateMachine;>;<init>()VCodeLineNumberTableLocalVariableTablethis)Lorg/jmock/internal/InvocationDispatcher;newStateMachine5(Ljava/lang/String;)Lorg/jmock/internal/StateMachine;nameLjava/lang/String; stateMachine!Lorg/jmock/internal/StateMachine;add(Lorg/jmock/api/Expectation;)V expectationLorg/jmock/api/Expectation;
describeTo(Lorg/hamcrest/Description;)V descriptionLorg/hamcrest/Description;describeMismatch7(Lorg/jmock/api/Invocation;Lorg/hamcrest/Description;)V
invocationLorg/jmock/api/Invocation; describedWith@(Ljava/util/List;Lorg/jmock/api/Invocation;)Ljava/lang/Iterable;iteratorLjava/util/Iterator;LocalVariableTypeTable1Ljava/util/Iterator<Lorg/jmock/api/Expectation;>;|(Ljava/util/List<Lorg/jmock/api/Expectation;>;Lorg/jmock/api/Invocation;)Ljava/lang/Iterable<Lorg/hamcrest/SelfDescribing;>;describe1(Lorg/hamcrest/Description;Ljava/lang/Iterable;)VselfDescribingExpectationsLjava/lang/Iterable;4Ljava/lang/Iterable<+Lorg/hamcrest/SelfDescribing;>;Q(Lorg/hamcrest/Description;Ljava/lang/Iterable<+Lorg/hamcrest/SelfDescribing;>;)V isSatisfied()Zi$dispatch.(Lorg/jmock/api/Invocation;)Ljava/lang/Object;
Exceptions~
SourceFileInvocationDispatcher.java *+java/util/ArrayList $% (%org/jmock/internal/StateMachine *<00> 7<00> JK CD E<00>)org/jmock/internal/InvocationDispatcher$1 InnerClasses *<00> <00>Q<00>no expectations specified: did you...
- forget to start an expectation with a cardinality clause?
- call a mocked method to specify the parameter of an expectation?<00> <00><00>expectations:

<00><00>
states:
<00> <00>Q <00><00>org/jmock/api/Expectation PQ <00><00> <00>Torg/jmock/api/ExpectationErrorunexpected invocation *<00>'org/jmock/internal/InvocationDispatcherjava/lang/Object'org/jmock/internal/ExpectationCollectororg/hamcrest/SelfDescribingjava/lang/Throwable(Ljava/lang/String;)Vjava/util/List(Ljava/lang/Object;)Z()Ljava/util/Iterator;Z(Lorg/jmock/internal/InvocationDispatcher;Ljava/util/Iterator;Lorg/jmock/api/Invocation;)VisEmptyorg/hamcrest/Description
appendText.(Ljava/lang/String;)Lorg/hamcrest/Description;
appendListf(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Iterable;)Lorg/hamcrest/Description;java/util/IteratorhasNextnext()Ljava/lang/Object;matches(Lorg/jmock/api/Invocation;)Zinvoke/(Ljava/lang/String;Lorg/jmock/api/Invocation;)V! !"#$%&'(%&) *+,M*<2A>*<2A>Y<><03>*<2A>Y<><03><05>- . /012,\<16>Y+<2B>M*<2A>,<2C>W,<2C>- . /034 5678,D *<2A>+<2B>W<>-
 . /0 9:;<,B
*+*<2A><04> <09>-
 .
/0
=>?@,Q*,**<2A>+<2B>
<EFBFBD> <09>-
 !. /0AB=>CD,z+<2B> N<> Y*-,<2C> <0A>-
$%.*/0$%AB EFG$' EH&IJK,<00>D*<2A><04><00>+<0F>W<>.+,<2C>W*<2A><05><00>+*<2A><05>W<>-7 8=&>2?CB. D/0D=>DLMG DLN&OPQ,w-*<2A><04>L+<2B><00>+<2B><00>M,<2C><00><03><><EFBFBD><EFBFBD><04>-FG&H+K.  9:
!RF-/0ST,<00>=*<2A><04>M,<2C><00>",<2C><00>N-+<2B><00> -+<2B><00><><EFBFBD>ۻY+<2B><1F>-OP'Q2U.*9:
(RF=/0=ABUVWXf
 PK
<00><><EFBFBD><<3C>j
..+org/jmock/internal/InvocationDiverter.class<73><73><EFBFBD><EFBFBD>1C
+
,
-
.
/
01
23
04 5678 declaringTypeLjava/lang/Class; SignatureLjava/lang/Class<TT;>;targetLjava/lang/Object;TT;nextLorg/jmock/api/Invokable;<init>?(Ljava/lang/Class;Ljava/lang/Object;Lorg/jmock/api/Invokable;)VCodeLineNumberTableLocalVariableTablethis'Lorg/jmock/internal/InvocationDiverter;LocalVariableTypeTable,Lorg/jmock/internal/InvocationDiverter<TT;>;5(Ljava/lang/Class<TT;>;TT;Lorg/jmock/api/Invokable;)VtoString()Ljava/lang/String;invoke.(Lorg/jmock/api/Invocation;)Ljava/lang/Object;
invocationLorg/jmock/api/Invocation;
Exceptions9A<T:Ljava/lang/Object;>Ljava/lang/Object;Lorg/jmock/api/Invokable;
SourceFileInvocationDiverter.java :    !; <=> ?@ AB "#%org/jmock/internal/InvocationDiverterjava/lang/Objectorg/jmock/api/Invokablejava/lang/Throwable()Vorg/jmock/api/InvocationgetInvokedMethod()Ljava/lang/reflect/Method;java/lang/reflect/MethodgetDeclaringClass()Ljava/lang/Class;applyTo&(Ljava/lang/Object;)Ljava/lang/Object;!
  <00>*<2A>*+<2B>*,<2C>*-<2D><04>  *    !D*<2A><04><05>  "#p"+<2B><06>*<2A><02> +*<2A><03><08>*<2A>+<2B> <00>""$% "&'()*PK
<00><><EFBFBD><*<2A>p[EECorg/jmock/internal/InvocationExpectation$AnyParametersMatcher.class<73><73><EFBFBD><EFBFBD>1
<init>()VCodeLineNumberTableLocalVariableTablethisAnyParametersMatcher InnerClasses?Lorg/jmock/internal/InvocationExpectation$AnyParametersMatcher;isCompatibleWith([Ljava/lang/Object;)Z
parameters[Ljava/lang/Object; SignatureYLorg/hamcrest/core/IsAnything<[Ljava/lang/Object;>;Lorg/jmock/internal/ParametersMatcher;
SourceFileInvocationExpectation.java(<any parameters>) =org/jmock/internal/InvocationExpectation$AnyParametersMatcherorg/hamcrest/core/IsAnything$org/jmock/internal/ParametersMatcher(Ljava/lang/String;)V(org/jmock/internal/InvocationExpectation 5*<01><02>
<00><00>
 6<04> <00>
 

PK
<00><><EFBFBD><<06><>M.org/jmock/internal/InvocationExpectation.class<73><73><EFBFBD><EFBFBD>1
E<00> <00><00> D<00>
<00><00> D<00><00>
<00><00> D<00> D<00> D<00> D<00><00>
<00> D<00> D<00><00>
<00> D<00> D<00> D<00><00>
<00>
<00><00> <00><00> <00><00>
D<00><00> <00><00>
D<00> <00><00>
D<00>
<00><00> <00><00> <00><00>
<00><00><00><00><00>
<00><00><00> <00><00><00> <00><00> <00><00> <00><00><00><00> .<00>
D<00> <00><00><00> 3<00>
<00><00>
<00><00>
D<00>
<00><00> <00><00>
<00><00> <00><00>
D<00> .<00>
D<00> <00><00>
<00><00> 3<00><00>
B<00><00><00><00>AnyParametersMatcher InnerClassesANY_PARAMETERS&Lorg/jmock/internal/ParametersMatcher; cardinality Lorg/jmock/internal/Cardinality; objectMatcherLorg/hamcrest/Matcher; SignatureLorg/hamcrest/Matcher<*>; methodMatcher3Lorg/hamcrest/Matcher<-Ljava/lang/reflect/Method;>;methodIsKnownToBeVoidZparametersMatcheractionLorg/jmock/api/Action;actionIsDefaultorderingConstraintsLjava/util/List;9Ljava/util/List<Lorg/jmock/internal/OrderingConstraint;>; sideEffects1Ljava/util/List<Lorg/jmock/internal/SideEffect;>;invocationCountI<init>()VCodeLineNumberTableLocalVariableTablethis*Lorg/jmock/internal/InvocationExpectation;setCardinality#(Lorg/jmock/internal/Cardinality;)VsetObjectMatcher(Lorg/hamcrest/Matcher;)VLocalVariableTypeTable(Lorg/hamcrest/Matcher<*>;)V setMethod(Ljava/lang/reflect/Method;)VmethodLjava/lang/reflect/Method;setMethodMatchermatcher6(Lorg/hamcrest/Matcher<-Ljava/lang/reflect/Method;>;)VsetParametersMatcher)(Lorg/jmock/internal/ParametersMatcher;)VaddOrderingConstraint*(Lorg/jmock/internal/OrderingConstraint;)VorderingConstraint'Lorg/jmock/internal/OrderingConstraint; addSideEffect"(Lorg/jmock/internal/SideEffect;)V
sideEffectLorg/jmock/internal/SideEffect; setAction(Lorg/jmock/api/Action;)VsetDefaultAction
describeTo(Lorg/hamcrest/Description;)V descriptionLorg/hamcrest/Description;describeMismatch7(Lorg/jmock/api/Invocation;Lorg/hamcrest/Description;)V
invocationLorg/jmock/api/Invocation;
parameters[Ljava/lang/Object;describeMethoddescribeSideEffectsi$Ljava/util/Iterator;shouldSuppressActionDescription()Z isSatisfiedallowsMoreInvocationsmatches(Lorg/jmock/api/Invocation;)ZisInCorrectOrder
constraintinvoke.(Lorg/jmock/api/Invocation;)Ljava/lang/Object;resultLjava/lang/Object;
Exceptions<00>performSideEffects<clinit>
SourceFileInvocationExpectation.java `a<00> <00>L KL<00> <00><00> MN <any method> <00><00> QN ST IJ UJorg/jmock/lib/action/VoidAction VW XTjava/util/ArrayList YZ \Z ^_(org/jmock/internal/matcher/MethodMatcher `n<00> <00><00><00> <00><00><00> <00><00> <00><00>! <00> <00><00> <00><00><00> <00><00> <00><00><00> <00>  <00>,  never invokedalready invoked  : .  
 <00>   %org/jmock/internal/OrderingConstraint; <00><00>org/jmock/internal/SideEffect <00> <00> <00><00>  <00><00>  <00><00> <00> <00>a <00><00>  a=org/jmock/internal/InvocationExpectation$AnyParametersMatcher(org/jmock/internal/InvocationExpectationjava/lang/Objectorg/jmock/api/Expectationjava/lang/Throwableorg/jmock/internal/CardinalityALLOWINGorg/hamcrest/core/IsAnythinganything()Lorg/hamcrest/Matcher;*(Ljava/lang/String;)Lorg/hamcrest/Matcher;java/lang/reflect/Method getReturnType()Ljava/lang/Class;java/lang/VoidTYPELjava/lang/Class;java/util/Listadd(Ljava/lang/Object;)Zorg/hamcrest/Description
appendText.(Ljava/lang/String;)Lorg/hamcrest/Description;$org/jmock/internal/ParametersMatcherorg/jmock/api/InvocationgetParametersAsArray()[Ljava/lang/Object;isCompatibleWith([Ljava/lang/Object;)Z/(Ljava/lang/Object;Lorg/hamcrest/Description;)Vorg/jmock/internal/Formattingtimes(I)Ljava/lang/String;org/hamcrest/Matcheriterator()Ljava/util/Iterator;java/util/IteratorhasNextnext()Ljava/lang/Object;org/jmock/api/Action(I)ZgetInvokedObjectgetInvokedMethod()Ljava/lang/reflect/Method;allowsInvocationNowcheckReturnTypeCompatibility(Ljava/lang/Object;)Vperform!DEF
IJKLMNOPQNORSTUJVWXTYZO[\ZO]^_`ab<00>S*<2A>*<2A><02>*<2A><04>*<06><07>*<03> *<2A>
<EFBFBD> *<2A> Y<> <0A>*<04>*<2A>Y<><11>*<2A>Y<><11>*<03><14>c2   '27B M"Rd Sefghb>*+<2B><03>c
%&defKLijbP*+<2B><05>c
)*defMNk MPOlmnb\ *<2A>Y+<2B><16>*+<2B><17><18><04><03> <09>c- ./d ef opqjbY *+<2B>*<03> <09>c23
4d ef rNk  rROstub>*+<2B> <0B>c
78defUJvwbD *<2A>+<2B>W<>c
; <d ef xyz{bD *<2A>+<2B>W<>c
? @d ef |}~bG *+<2B>*<03><0F>cCD
Ed ef VW<00>bG *+<2B>*<04><0F>cHI
Jd ef VW<00><00>bm%*<2A><1A> +<1B>W*+<2B>*<2A> +<2B>*+<2B><1F>cMNPQR$Sd%ef%<00><00><00><00>b<00>2*,<2C>+<2B> N*<2A> ,<2C>*<2A> -<2D>!<00>*<2A> -,<2C>"*,<2C><1F>cVW
XY!Z,\1]d*2ef2<00><00>2<00><00>
(<00><00><00><00>b<00>b*<2A>+<2B>#+$<24>W*<2A><14>+%<25>W<>+&<26>W+*<2A><14>'<27>W+(<28>W*<2A>+<2B>)+*<2A>W*<2A>+<2B>)<00>c. `abc$f-g;iDjNkWlamdbefb<00><00><00><00>b<00>{*<2A><12>+M,<2C>,<00> ,<2C>-<00>.N+/<2F>W-+<2B>0<00><><EFBFBD>*<2A>1<>+/<2F>W*<2A>+<2B>2*<2A><13>+M,<2C>,<00> ,<2C>-<00>3N+/<2F>W-+<2B>4<00><>ݱc*
pq&r0u7v@wJzg{p|z~d>xy
&<00><00>g|}T&<00><00>{ef{<00><00><00><00>b>*<2A> <09>*<2A><0F><04><03>c<00>d ef<00><00>b6 *<2A>*<2A><14>5<>c<00>d  ef<00><00>b6 *<2A>*<2A><14>6<>c<00>d  ef<00><00>bxD*<2A>7<>>*<2A>+<2B>8<>9<00>.*<2A>+<2B>:<3A>9<00>*<2A> +<2B> <20>;<00>*<2A><<3C><04><03>c<00>dDefD<00><00><00><00>bs-*<2A><12>+L+<2B>,<00>+<2B>-<00>.M,<2C>=<00><03><><EFBFBD><EFBFBD><04>c<00><00>+<00>d  <00>y
!<00><00>-ef<00><00>bn *Y<>`<60>*<2A>>*<2A>+<2B>?M+,<2C>@,<2C>c<00>
<00><00><00><00>d  ef <00><00><00><00><00><00><00>abm'*<2A><13>+L+<2B>,<00>+<2B>-<00>3M,<2C>A<00><><EFBFBD><EFBFBD>c<00><00>&<00>d |}
<00><00>'ef<00>ab# <0B>BY<42>C<>
<EFBFBD>c<00><00>H
BDG
PK
<00><><EFBFBD><;<1C>8<EFBFBD><00>5org/jmock/internal/InvocationExpectationBuilder.class<73><73><EFBFBD><EFBFBD>1<00>
2<00><00>
<00> 1<00> 1<00> 1<00><00>
<00> 1<00>
<00>
<00> <00><00>
<00> <00><00>
<00>
<00><00><00><00>
<00><00>
<00>
<00> <00>
1<00>
<00><00>
<00> <00><00><00>
<00><00>
<00>
<00>
1<00>
<00> <00><00>
<00><00><00><00><00>
&<00>
1<00>
<00><00>
+<00>
1<00>
<00><00><00>
1<00><00><00><00><00><00><00> expectation*Lorg/jmock/internal/InvocationExpectation;isFullySpecifiedZneedsDefaultActioncapturedParameterMatchersLjava/util/List; Signature+Ljava/util/List<Lorg/hamcrest/Matcher<*>;>;<init>()VCodeLineNumberTableLocalVariableTablethis1Lorg/jmock/internal/InvocationExpectationBuilder; toExpectation3(Lorg/jmock/api/Action;)Lorg/jmock/api/Expectation; defaultActionLorg/jmock/api/Action;setCardinality#(Lorg/jmock/internal/Cardinality;)V cardinality Lorg/jmock/internal/Cardinality;addParameterMatcher(Lorg/hamcrest/Matcher;)VmatcherLorg/hamcrest/Matcher;LocalVariableTypeTableLorg/hamcrest/Matcher<*>;(Lorg/hamcrest/Matcher<*>;)VaddOrderingConstraint*(Lorg/jmock/internal/OrderingConstraint;)V
constraint'Lorg/jmock/internal/OrderingConstraint;addInSequenceOrderingConstraint(Lorg/jmock/Sequence;)VsequenceLorg/jmock/Sequence; setAction(Lorg/jmock/api/Action;)Vaction addSideEffect"(Lorg/jmock/internal/SideEffect;)V
sideEffectLorg/jmock/internal/SideEffect;captureExpectedObject&(Ljava/lang/Object;)Ljava/lang/Object;
mockObjectLjava/lang/Object;capturingImposterTT;<T:Ljava/lang/Object;>(TT;)TT; asMockedType8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;0<T:Ljava/lang/Object;>(TT;Ljava/lang/Object;)TT;createExpectationFrom(Lorg/jmock/api/Invocation;)V
invocationLorg/jmock/api/Invocation;checkParameterMatcherCountcheckWasFullySpecifiedof7(Lorg/hamcrest/Matcher;)Lorg/jmock/syntax/MethodClause; objectMatcher:(Lorg/hamcrest/Matcher<*>;)Lorg/jmock/syntax/MethodClause;method;(Lorg/hamcrest/Matcher;)Lorg/jmock/syntax/ParametersClause; methodMatcher2Lorg/hamcrest/Matcher<Ljava/lang/reflect/Method;>;W(Lorg/hamcrest/Matcher<Ljava/lang/reflect/Method;>;)Lorg/jmock/syntax/ParametersClause;7(Ljava/lang/String;)Lorg/jmock/syntax/ParametersClause; nameRegexLjava/lang/String;with([Lorg/hamcrest/Matcher;)VparameterMatchers[Lorg/hamcrest/Matcher;[Lorg/hamcrest/Matcher<*>;([Lorg/hamcrest/Matcher<*>;)VwithNoArguments
SourceFile!InvocationExpectationBuilder.java @A(org/jmock/internal/InvocationExpectation 78 9: ;:java/util/ArrayList <= <00>_ KL<00> <00><00> VW<00> <00><00> ^_ ab!org/jmock/internal/CaptureControl"java/lang/IllegalArgumentException)can only set expectations on mock objects @<00>,org/jmock/internal/matcher/MockObjectMatcher @<00> <00>P <00><00> lm<00> <00><00> <00><00> <00><00>/org/jmock/internal/matcher/AllParametersMatcher <00><00> @<00> <00><00> sp @<00> <00><00> <00><00><00>not all parameters were given explicit matchers: either all parameters must be specified by matchers or all must be specified by values, you cannot mix matchers and valuesjava/lang/IllegalStateException#expectation was not fully specified ef <00>P,org/jmock/internal/matcher/MethodNameMatcher yz<00> <00><00>org/hamcrest/Matcher <00><00>/org/jmock/internal/InvocationExpectationBuilderjava/lang/Object%org/jmock/internal/ExpectationCaptureorg/jmock/syntax/ReceiverClauseorg/jmock/syntax/MethodClause!org/jmock/syntax/ParametersClausesetDefaultActionjava/util/Listadd(Ljava/lang/Object;)Zorg/jmock/SequenceconstrainAsNextInSequence-(Lorg/jmock/internal/InvocationExpectation;)V(Ljava/lang/String;)V(Ljava/lang/Object;)VsetObjectMatchercaptureExpectationTo;(Lorg/jmock/internal/ExpectationCapture;)Ljava/lang/Object;org/jmock/api/InvocationgetInvokedMethod()Ljava/lang/reflect/Method; setMethod(Ljava/lang/reflect/Method;)VisEmpty()ZgetParametersAsArray()[Ljava/lang/Object;([Ljava/lang/Object;)VsetParametersMatcher)(Lorg/jmock/internal/ParametersMatcher;)V(Ljava/util/List;)Vsize()IgetParameterCountsetMethodMatcherjava/util/ArraysasList%([Ljava/lang/Object;)Ljava/util/List;!123456789:;:<=>?@AB_%*<2A>*<2A>Y<><03>*<03>*<04>*<2A>Y<><08> <09>CD %EFGHBP*<2A><06> *<2A>+<2B>
*<2A><04>C #DEFIJKLBA *<2A>+<2B> <0B>C
'(D EF MNOPBV *<2A> +<2B> W<>C
+ ,D EF QRS  QT>UVWBA *<2A>+<2B> <0A>C
/0D EF XYZ[BC +*<2A><04><00>C
3
4D EF \]^_BJ*<2A>+<2B>*<03><06>C78 9DEF`JabBA *<2A>+<2B><10>C
<=D EF cdefB<00>7+<2B><11> <0A>Y<13><14>*<2A><04>Y+<2B><16>*<04>+<2B>*<2A>M*+,<2C><19>C@AD E%G0ID 7EF7gh0ihS 7gj>klmBR,<2C>CQD EFghihS gj>nopB<00>D*<2A>+<2B><1A>*<2A> <09><00>*<2A><04>Y+<2B><1E><1F> <20>*+<2B>!*<2A><04>Y*<2A> <09>"<22> <20>CU WX,[1\C^DDEFDqrspBW*<2A> <09>#+<2B>$<24> <0A>Y%<25><14><>CabdDEFqrtABD*<2A><05> <0A>&Y'<27>(<28><>CghjD EFufBL*+<2B>)<29>CqDEFghS gj>kuvB]*<2A>+<2B>*<04>*<2A>Cuv wDEFwRS wT>xyzBT
*<2A>+<2B>**<2A>C
{|D
EF
{RS 
{|>}y~BA *<2A>+Y+<2B>,<2C>-<2D>C<00>D EF <00><00><00><00>B]*<2A><04>Y+<2B>.<2E>"<22> <20>C
<00><00>DEF<00><00>S <00><00>><00><00>AB7 *<03>/<2F>0<>C
<00><00>D  EF<00><00>PK
<00><><EFBFBD><g<><67><EFBFBD><EFBFBD><00>:org/jmock/internal/InvocationToExpectationTranslator.class<73><73><EFBFBD><EFBFBD>1,
    !"#$%capture'Lorg/jmock/internal/ExpectationCapture; defaultActionLorg/jmock/api/Action;<init>@(Lorg/jmock/internal/ExpectationCapture;Lorg/jmock/api/Action;)VCodeLineNumberTableLocalVariableTablethis6Lorg/jmock/internal/InvocationToExpectationTranslator;invoke.(Lorg/jmock/api/Invocation;)Ljava/lang/Object;
invocationLorg/jmock/api/Invocation;
Exceptions&
SourceFile&InvocationToExpectationTranslator.java '
( )*+ 4org/jmock/internal/InvocationToExpectationTranslatorjava/lang/Objectorg/jmock/api/Invokablejava/lang/Throwable()V%org/jmock/internal/ExpectationCapturecreateExpectationFrom(Lorg/jmock/api/Invocation;)Vorg/jmock/api/Action!
  Y*<2A>*+<2B>*,<2C><03>   
 M*<2A>+<2B>*<2A>+<2B><00>

PK
<00><><EFBFBD><<3C><>i<EFBFBD><69><00>Corg/jmock/internal/NamedSequence$InSequenceOrderingConstraint.class<73><73><EFBFBD><EFBFBD>15
! "
#$% &'
#()*+sequence"Lorg/jmock/internal/NamedSequence;indexI<init>&(Lorg/jmock/internal/NamedSequence;I)VCodeLineNumberTableLocalVariableTablethisInSequenceOrderingConstraint InnerClasses?Lorg/jmock/internal/NamedSequence$InSequenceOrderingConstraint;allowsInvocationNow()Z
describeTo(Lorg/hamcrest/Description;)V descriptionLorg/hamcrest/Description;
SourceFileNamedSequence.java , - ./ in sequence 0 12 34=org/jmock/internal/NamedSequence$InSequenceOrderingConstraintjava/lang/Object%org/jmock/internal/OrderingConstraint()V org/jmock/internal/NamedSequence
access$000&(Lorg/jmock/internal/NamedSequence;I)Zorg/hamcrest/Description
appendText.(Ljava/lang/String;)Lorg/hamcrest/Description;
access$1006(Lorg/jmock/internal/NamedSequence;)Ljava/lang/String;  
  Y*<2A>*+<2B>*<1C><03>/0 12   6 *<2A>*<2A><03><04>5  N+<05>*<2A><02><07>W<>
9:
#
PK
<00><><EFBFBD><<1F>*/OO&org/jmock/internal/NamedSequence.class<73><73><EFBFBD><EFBFBD>1T 4
5
67
6 8 9: 9;<
=
>? 9@A BCDEInSequenceOrderingConstraint InnerClassesnameLjava/lang/String;elementsLjava/util/List; Signature-Ljava/util/List<Lorg/jmock/api/Expectation;>;<init>(Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis"Lorg/jmock/internal/NamedSequence;toString()Ljava/lang/String;constrainAsNextInSequence-(Lorg/jmock/internal/InvocationExpectation;)V expectation*Lorg/jmock/internal/InvocationExpectation;indexIisSatisfiedToIndex(I)Zi
access$000&(Lorg/jmock/internal/NamedSequence;I)Zx0x1
access$1006(Lorg/jmock/internal/NamedSequence;)Ljava/lang/String;
SourceFileNamedSequence.java  )* Fjava/util/ArrayList G HI JK=org/jmock/internal/NamedSequence$InSequenceOrderingConstraint LM NO PQorg/jmock/api/Expectation RS org/jmock/internal/NamedSequencejava/lang/Objectorg/jmock/Sequence()Vjava/util/Listsize()Iadd(Ljava/lang/Object;)Z&(Lorg/jmock/internal/NamedSequence;I)V(org/jmock/internal/InvocationExpectationaddOrderingConstraint*(Lorg/jmock/internal/OrderingConstraint;)Vget(I)Ljava/lang/Object; isSatisfied()Z!U*<2A>*<2A>Y<><05>*+<2B><01> !"/*<2A><01>  #$m#*<2A><06>=*<2A>+<2B>W+<2B> Y*<1C>
<EFBFBD> <0B>
!"" # #%&
'()*p&=<1B> *<2A><1C> <00> <0A><00><03><><01><><EFBFBD><04>%&%$( "+(& &'(,-:*<1B><02>. /(01/*<2A><01> . 23
 
PK
<00><><EFBFBD><ܧ1<DCA7><31><00>7org/jmock/internal/ObjectMethodExpectationBouncer.class<73><73><EFBFBD><EFBFBD>1(

!"#
$%&<init>(Lorg/jmock/api/Invokable;)VCodeLineNumberTableLocalVariableTablethis3Lorg/jmock/internal/ObjectMethodExpectationBouncer;nextLorg/jmock/api/Invokable;
fakeEquals'(Ljava/lang/Object;Ljava/lang/Object;)Z invokedObjectLjava/lang/Object;other fakeFinalize(Ljava/lang/Object;)V fakeHashCode(Ljava/lang/Object;)I fakeToString&(Ljava/lang/Object;)Ljava/lang/String;cannotDefineExpectation&()Ljava/lang/IllegalArgumentException;
SourceFile#ObjectMethodExpectationBouncer.java  "java/lang/IllegalArgumentExceptionFyou cannot define expectations for methods defined by the Object class '1org/jmock/internal/ObjectMethodExpectationBouncer$org/jmock/internal/FakeObjectMethods(Ljava/lang/String;)V! 
>*+<2B><01>
  
C*<2A><02>   
9*<2A><02>   
9*<2A><02>   
9*<2A><02>   
4
<EFBFBD>Y<04><05>  
PK
<00><><EFBFBD><<13><>\<5C><00>+org/jmock/internal/OrderingConstraint.class<73><73><EFBFBD><EFBFBD>1  
allowsInvocationNow()Z
SourceFileOrderingConstraint.java%org/jmock/internal/OrderingConstraintjava/lang/Objectorg/hamcrest/SelfDescribingPK
<00><><EFBFBD><<3C>
y<EFBFBD>***org/jmock/internal/ParametersMatcher.class<73><73><EFBFBD><EFBFBD>1 
  isCompatibleWith([Ljava/lang/Object;)Z Signature=Ljava/lang/Object;Lorg/hamcrest/Matcher<[Ljava/lang/Object;>;
SourceFileParametersMatcher.java$org/jmock/internal/ParametersMatcherjava/lang/Objectorg/hamcrest/Matcher PK
<00><><EFBFBD><<3C>O<EFBFBD><4F>.org/jmock/internal/ProxiedObjectIdentity.class<73><73><EFBFBD><EFBFBD>1&


 !<init>(Lorg/jmock/api/Invokable;)VCodeLineNumberTableLocalVariableTablethis*Lorg/jmock/internal/ProxiedObjectIdentity;nextLorg/jmock/api/Invokable; fakeFinalize(Ljava/lang/Object;)V invokedObjectLjava/lang/Object;
fakeEquals'(Ljava/lang/Object;Ljava/lang/Object;)Zother fakeToString&(Ljava/lang/Object;)Ljava/lang/String; fakeHashCode(Ljava/lang/Object;)I
SourceFileProxiedObjectIdentity.java  "#$ %(org/jmock/internal/ProxiedObjectIdentity$org/jmock/internal/FakeObjectMethodstoString()Ljava/lang/String;java/lang/SystemidentityHashCode!>*+<2B><01>

  5<01> 
 I ,+<2B><04><03> 
  9*<2A><02> 
 9+<2B><03> 
 PK
<00><><EFBFBD>< T<><05> <00> 1org/jmock/internal/ReturnDefaultValueAction.class<73><73><EFBFBD><EFBFBD>1<00>
3]^
] 4_ 4`
4ab
]
4cd ef gh
ij
kl gm gn
o
p
qr stu sv 0w 0x
4y zw w{
| w}
~ "w
"<00> %w<00>
%<00> (w<00>
(<00> +w<00>
+<00> .w<00>
.<00><00><00><00><00><00><00>resultValuesByTypeLjava/util/Map; Signature7Ljava/util/Map<Ljava/lang/Class<*>;Ljava/lang/Object;>; imposteriserLorg/jmock/api/Imposteriser;<init>(Lorg/jmock/api/Imposteriser;)VCodeLineNumberTableLocalVariableTablethis-Lorg/jmock/internal/ReturnDefaultValueAction;()VsetImposterisernewImposteriser
describeTo(Lorg/hamcrest/Description;)V descriptionLorg/hamcrest/Description; addResult&(Ljava/lang/Class;Ljava/lang/Object;)V
resultTypeLjava/lang/Class; resultValueLjava/lang/Object;LocalVariableTypeTableLjava/lang/Class<*>;)(Ljava/lang/Class<*>;Ljava/lang/Object;)Vinvoke.(Lorg/jmock/api/Invocation;)Ljava/lang/Object;
invocationLorg/jmock/api/Invocation;
returnType
Exceptions<00>createDefaultResults
SourceFileReturnDefaultValueAction.java <Cjava/util/HashMap 67 :; ZC(org/jmock/lib/JavaReflectionImposteriser <=returns a default value<00> <00><00><00> <00><00><00> <00><00><00> <00><00> <00><00> <00><00> <00><00> <00><00><00> <00><00><00> <00><00>java/lang/Class <00><00> <00>M <00><00> JK<00>java/lang/Byte <<00>java/lang/Short <<00>java/lang/Integer <<00>java/lang/Long <<00>java/lang/Character <<00>java/lang/Float <<00>java/lang/Double <<00>java/lang/Booleanjava/lang/Stringjava/lang/Object+org/jmock/internal/ReturnDefaultValueActionorg/jmock/api/Actionjava/lang/Throwableorg/hamcrest/Description
appendText.(Ljava/lang/String;)Lorg/hamcrest/Description; java/util/Mapput8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;org/jmock/api/InvocationgetInvokedMethod()Ljava/lang/reflect/Method;java/lang/reflect/Method getReturnType()Ljava/lang/Class; containsKey(Ljava/lang/Object;)Zget&(Ljava/lang/Object;)Ljava/lang/Object;isArray()ZgetComponentTypejava/lang/reflect/Array newInstance&(Ljava/lang/Class;I)Ljava/lang/Object;org/jmock/api/ImposterisercanImposterise(Ljava/lang/Class;)Z imposteriseP(Lorg/jmock/api/Invokable;Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/Object;TYPEFALSELjava/lang/Boolean;java/lang/Void(B)V(S)V(I)V(J)V(C)V(F)V(D)V!4356789:;<=>]*<2A>*<2A>Y<><03>*+<2B>*<2A><06>? !"@AB:;<C>: *<2A>Y<><08> <09>?
% &@  ABD=>>*+<2B><05>?
)*@ABE;FG>B
+
<EFBFBD> W<>?
- .@
AB
HIJK>a *<2A>+,<2C> W<>?
1 2@  AB LM NOP  LQ8RST><00>O+<2B> <0A>M*<2A>,<2C><00>*<2A>,<2C><00>,<2C><11> ,<2C><03><13>*<2A>,<2C><00>*<2A>*,<03><15><00><01>?"578 :';0==>MA@ OABOUVGWMP GWQXYZC>|*<2A><17><18>*<2A><01>*<2A><1B>Y<03><1D>*<2A><1E>Y<03> <20>*<2A>!<21>"Y<03>#<23>*<2A>$<24>%Y <09>&<26>*<2A>'<27>(Y<03>)<29>*<2A>*<2A>+Y <0B>,<2C>*<2A>-<2D>.Y<0E>/<2F>*0<><18>*<1C>Y<03><1D>*<1F>Y<03> <20>*"<22>"Y<03>#<23>*%<25>%Y <09>&<26>*(<28>(Y<03>)<29>*+<2B>+Y <0B>,<2C>*.<2E>.Y<0E>/<2F>*12<>*3<>3Y<33><01><19>?RF
GH!I0J?KNL]MlN{O<00>P<00>Q<00>R<00>S<00>T<00>U<00>V<00>W<00>XY@ AB[\PK
<00><><EFBFBD><]R<>م <00> -org/jmock/internal/SearchingClassLoader.class<73><73><EFBFBD><EFBFBD>1z
J K
LM
N OP OQRS
T
UV
W
XY
Z
[\
[]
^ O_ O`
a
b nextToSearchLjava/lang/ClassLoader;<init>1(Ljava/lang/ClassLoader;Ljava/lang/ClassLoader;)VCodeLineNumberTableLocalVariableTablethis)Lorg/jmock/internal/SearchingClassLoader;parentcombine1([Ljava/lang/ClassLoader;)Ljava/lang/ClassLoader; parentLoaders[Ljava/lang/ClassLoader;)(Ljava/util/List;)Ljava/lang/ClassLoader;iILjava/util/List;loaderLocalVariableTypeTable)Ljava/util/List<Ljava/lang/ClassLoader;>; SignatureB(Ljava/util/List<Ljava/lang/ClassLoader;>;)Ljava/lang/ClassLoader;combineLoadersOf+([Ljava/lang/Class;)Ljava/lang/ClassLoader;classes[Ljava/lang/Class;[Ljava/lang/Class<*>;.([Ljava/lang/Class<*>;)Ljava/lang/ClassLoader;<(Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/ClassLoader;cLjava/lang/Class;arr$len$i$firstothersloadersLjava/lang/Class<*>;B(Ljava/lang/Class<*>;[Ljava/lang/Class<*>;)Ljava/lang/ClassLoader;addIfNewElement*(Ljava/util/List;Ljava/lang/ClassLoader;)VC(Ljava/util/List<Ljava/lang/ClassLoader;>;Ljava/lang/ClassLoader;)V findClass%(Ljava/lang/String;)Ljava/lang/Class;nameLjava/lang/String;
Exceptionsc((Ljava/lang/String;)Ljava/lang/Class<*>;
SourceFileSearchingClassLoader.java d e fg $h ij kljava/lang/ClassLoader'org/jmock/internal/SearchingClassLoader  -3java/util/ArrayList mn op >?q rs tp up vw xw yB AB java/lang/ClassNotFoundException(Ljava/lang/ClassLoader;)Vjava/util/ArraysasList%([Ljava/lang/Object;)Ljava/util/List;java/util/Listsize()Iget(I)Ljava/lang/Object;()Vjava/lang/ClassgetClassLoader()Ljava/lang/ClassLoader;java/lang/Thread currentThread()Ljava/lang/Thread;getContextClassLoadergetSystemClassLoadercontains(Ljava/lang/Object;)Zadd loadClass!Q *+<2B>*,<2C><02> 
    <00> !2*<2A><03><04> "# $<00>:**<2A>d<><00>L*<2A>d=<1C><1C>Y*<1C><00>+<2B> L<><02><><EFBFBD><EFBFBD>+<2B>28 %&:"'(() :"*+,<00>-.D*2*<2A>
<EFBFBD>  /0) /1+2<00>-3 U<> Y<> M,*<2A> <0A>+N-<2D>66<04>-2:,<06> <0A><0E><01><><EFBFBD>,<08> <0A>,<2C><0F><10>,<2C><11>,<2C><04>& $&'&(/'50?4I6P8H& 45#607&8&U95U:0M;')*& 4<U9<U:1M;*+=
>?e+<2B>*+<2B><00> *+<2B>W<><=?;'4) ;*+@ABR*<2A><02> *<2A>+<2B><14>*+<2B><15>CDGCDEF+GHIPK
<00><><EFBFBD><1 <09><19><00>#org/jmock/internal/SideEffect.class<73><73><EFBFBD><EFBFBD>1  
perform()V
SourceFileSideEffect.javaorg/jmock/internal/SideEffectjava/lang/Objectorg/hamcrest/SelfDescribingPK
<00><><EFBFBD><Fq77/org/jmock/internal/SingleThreadedPolicy$1.class<73><73><EFBFBD><EFBFBD>10 ! "
#
$ %&'(val$mockObjectLorg/jmock/api/Invokable;this$0)Lorg/jmock/internal/SingleThreadedPolicy;<init>E(Lorg/jmock/internal/SingleThreadedPolicy;Lorg/jmock/api/Invokable;)VCodeLineNumberTableLocalVariableTablethis InnerClasses+Lorg/jmock/internal/SingleThreadedPolicy$1;invoke.(Lorg/jmock/api/Invocation;)Ljava/lang/Object;
invocationLorg/jmock/api/Invocation;
Exceptions)
SourceFileSingleThreadedPolicy.javaEnclosingMethod* +,
- ./ )org/jmock/internal/SingleThreadedPolicy$1java/lang/Objectorg/jmock/api/Invokablejava/lang/Throwable'org/jmock/internal/SingleThreadedPolicysynchroniseAccessTo4(Lorg/jmock/api/Invokable;)Lorg/jmock/api/Invokable;()V
access$000,(Lorg/jmock/internal/SingleThreadedPolicy;)V 
  9*+<2B>*,<2C>*<2A><03> J*<2A><01>*<2A>+<2B><00>
 
PK
<00><><EFBFBD><`<60><>"<22><00>-org/jmock/internal/SingleThreadedPolicy.class<73><73><EFBFBD><EFBFBD>1X
.
/
01 23
67
/8
9:
;<=
>
? @A
BCD
EFGH
testThreadLjava/lang/Thread;<init>()VCodeLineNumberTableLocalVariableTablethis)Lorg/jmock/internal/SingleThreadedPolicy;synchroniseAccessTo4(Lorg/jmock/api/Invokable;)Lorg/jmock/api/Invokable;
mockObjectLorg/jmock/api/Invokable;checkRunningOnTestThread reportError(Ljava/lang/String;)VerrorLjava/lang/String;
access$000,(Lorg/jmock/internal/SingleThreadedPolicy;)Vx0
SourceFileSingleThreadedPolicy.java $ I JK )org/jmock/internal/SingleThreadedPolicy$1 InnerClasses Ljava/lang/StringBuilder&the Mockery is not thread-safe: use a MN%org/jmock/lib/concurrent/SynchroniserO PQ to ensure thread safety RQ %&S TUV W&)java/util/ConcurrentModificationException &'org/jmock/internal/SingleThreadedPolicyjava/lang/Objectorg/jmock/api/ThreadingPolicyjava/lang/Thread currentThread()Ljava/lang/Thread;E(Lorg/jmock/internal/SingleThreadedPolicy;Lorg/jmock/api/Invokable;)Vappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;java/lang/Class getSimpleName()Ljava/lang/String;toStringjava/lang/SystemerrLjava/io/PrintStream;java/io/PrintStreamprintln!> *<2A>*<2A><03><04>     !>
<EFBFBD>Y*+<2B><06>

"#$^,<2C>*<2A><04>$*<2A>Y<> <09>
 <0B> <0C>
 <0A>
<EFBFBD><0E><0F>
+ ,%&H<10>+<2B><11>Y+<2B><13>
"#'()*/*<2A><01>
 +,-5
PK
<00><><EFBFBD><<3C><>_<EFBFBD><5F><00>org/jmock/internal/State.class<73><73><EFBFBD><EFBFBD>1  
activate()V
SourceFile
State.javaorg/jmock/internal/Statejava/lang/Object!org/jmock/internal/StatePredicatePK
<00><><EFBFBD><<0F>̹<EFBFBD><00>'org/jmock/internal/StateMachine$1.class<73><73><EFBFBD><EFBFBD>1C
'
(
)
%*
%+
,-
%. /01234 val$stateLjava/lang/String;this$0!Lorg/jmock/internal/StateMachine;<init>6(Lorg/jmock/internal/StateMachine;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis InnerClasses#Lorg/jmock/internal/StateMachine$1;activate()VisActive()Z
describeTo(Lorg/hamcrest/Description;)V descriptionLorg/hamcrest/Description;
SourceFileStateMachine.javaEnclosingMethod5 67    89 :;< => ?;@ AB is !org/jmock/internal/StateMachine$1java/lang/Objectorg/jmock/internal/Stateorg/jmock/internal/StateMachineis.(Ljava/lang/String;)Lorg/jmock/internal/State;
access$002G(Lorg/jmock/internal/StateMachine;Ljava/lang/String;)Ljava/lang/String;
access$0005(Lorg/jmock/internal/StateMachine;)Ljava/lang/String;java/lang/Stringequals(Ljava/lang/Object;)Z
access$100org/hamcrest/Description
appendText.(Ljava/lang/String;)Lorg/hamcrest/Description;
  9*+<2B>*,<2C>*<2A><03> ; *<2A>*<2A><02>W<>
 !  9*<2A>*<2A><01><05><06>$ W+*<2A><01><07> <09>*<2A><02>W<>
() !"#$%&

PK
<00><><EFBFBD><Z<>9<EFBFBD><39><00>'org/jmock/internal/StateMachine$2.class<73><73><EFBFBD><EFBFBD>1> $ %
&
"'
()
"* +,-./0 val$stateLjava/lang/String;this$0!Lorg/jmock/internal/StateMachine;<init>6(Lorg/jmock/internal/StateMachine;Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis InnerClasses#Lorg/jmock/internal/StateMachine$2;isActive()Z
describeTo(Lorg/hamcrest/Description;)V descriptionLorg/hamcrest/Description;
SourceFileStateMachine.javaEnclosingMethod1 23  4 567 89 :6; <= is not !org/jmock/internal/StateMachine$2java/lang/Object!org/jmock/internal/StatePredicateorg/jmock/internal/StateMachineisNot7(Ljava/lang/String;)Lorg/jmock/internal/StatePredicate;()V
access$0005(Lorg/jmock/internal/StateMachine;)Ljava/lang/String;java/lang/Stringequals(Ljava/lang/Object;)Z
access$100org/hamcrest/Description
appendText.(Ljava/lang/String;)Lorg/hamcrest/Description;
  9*+<2B>*,<2C>*<2A><03>. A*<2A>*<2A><01><04><05><04><03>0 W+*<2A><01><06><08>*<2A><02>W<>
45 !"#
 PK
<00><><EFBFBD><j+<2B><><EFBFBD><00>%org/jmock/internal/StateMachine.class<73><73><EFBFBD><EFBFBD>1V 7 8
9
:;
<=
@A
@ BCDE
9F
G
HIJKnameLjava/lang/String; currentState<init>(Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis!Lorg/jmock/internal/StateMachine;toString()Ljava/lang/String;startsAs&(Ljava/lang/String;)Lorg/jmock/States; initialStatebecome nextStateis.(Ljava/lang/String;)Lorg/jmock/internal/State;stateisNot7(Ljava/lang/String;)Lorg/jmock/internal/StatePredicate;
describeTo(Lorg/hamcrest/Description;)V descriptionLorg/hamcrest/Description;
access$002G(Lorg/jmock/internal/StateMachine;Ljava/lang/String;)Ljava/lang/String;x0x1
access$0005(Lorg/jmock/internal/StateMachine;)Ljava/lang/String;
access$100
SourceFileStateMachine.java   LM NO #!org/jmock/internal/StateMachine$1 InnerClasses P!org/jmock/internal/StateMachine$2Q RS has no current statejava/lang/StringBuilder is TU org/jmock/internal/StateMachinejava/lang/Objectorg/jmock/States()Vorg/hamcrest/StringDescriptionasString1(Lorg/hamcrest/SelfDescribing;)Ljava/lang/String;6(Lorg/jmock/internal/StateMachine;Ljava/lang/String;)Vorg/hamcrest/Description
appendText.(Ljava/lang/String;)Lorg/hamcrest/Description;append-(Ljava/lang/String;)Ljava/lang/StringBuilder;!
O*<2A>*<01>*+<2B><01>   /*<2A><04>  !?*+<2B>*<2A>
"#>*+<2B><02>
$%&>
<EFBFBD>Y*+<2B><07>

'()>
<EFBFBD>Y*+<2B> <09>.

'*+k3+*<2A><01>
*<2A><02> <0B><19> Y<> <0E>*<2A><02><0F><10>
W<>
:2<33,-./;*+Z<><02>0123/*<2A><02> 043/*<2A><01> 056?PK
<00><><EFBFBD><<3C><><EFBFBD><EFBFBD><EFBFBD><00>'org/jmock/internal/StatePredicate.class<73><73><EFBFBD><EFBFBD>1  
isActive()Z
SourceFileStatePredicate.java!org/jmock/internal/StatePredicatejava/lang/Objectorg/hamcrest/SelfDescribingPK
<00><><EFBFBD><<3C><1B><><EFBFBD><00>5org/jmock/internal/matcher/AllParametersMatcher.class<73><73><EFBFBD><EFBFBD>1<00>
$]
#^ #_` ab'
#c
#de fg fh
#ij
]k
l
mn
o pq frst uvwx
yz f{|
}2
#~<00><00>elementMatchers[Lorg/hamcrest/Matcher; Signature+[Lorg/hamcrest/Matcher<Ljava/lang/Object;>;<init>([Ljava/lang/Object;)VCodeLineNumberTableLocalVariableTablethis1Lorg/jmock/internal/matcher/AllParametersMatcher;expectedValues[Ljava/lang/Object;(Ljava/util/List;)VparameterMatchersLjava/util/List;LocalVariableTypeTable+Ljava/util/List<Lorg/hamcrest/Matcher<*>;>;.(Ljava/util/List<Lorg/hamcrest/Matcher<*>;>;)VisCompatibleWith([Ljava/lang/Object;)Z
parameters matchesSafely0([Ljava/lang/Object;Lorg/hamcrest/Description;)ZmismatchLorg/hamcrest/Description;matchesNumberOfParametersmatchesParametersiIresultZmatchesParameterF(Ljava/lang/Object;Lorg/hamcrest/Matcher;Lorg/hamcrest/Description;I)ZvalueLjava/lang/Object;matcherLorg/hamcrest/Matcher;indexparameterMatches*Lorg/hamcrest/Matcher<Ljava/lang/Object;>;Z(Ljava/lang/Object;Lorg/hamcrest/Matcher<Ljava/lang/Object;>;Lorg/hamcrest/Description;I)Z
describeTo(Lorg/hamcrest/Description;)V descriptionequalMatchersFor,([Ljava/lang/Object;)[Lorg/hamcrest/Matcher;matchers@([Ljava/lang/Object;)[Lorg/hamcrest/Matcher<Ljava/lang/Object;>;/(Ljava/lang/Object;Lorg/hamcrest/Description;)Zx0x1cLorg/hamcrest/TypeSafeDiagnosingMatcher<[Ljava/lang/Object;>;Lorg/jmock/internal/ParametersMatcher;
SourceFileAllParametersMatcher.java *<00> ST &'org/hamcrest/Matcher<00> <00><00> @= A=wrong number of parameters: <00> <00><00> <00><00> FGjava/lang/StringBuilder
parameter <00><00> <00><00> <00><00> <00><00> matched: <00><00>did not match: 
, because <00><00>(, )<00> <00><00> <00><00>org/hamcrest/core/IsEqual *<00> <=/org/jmock/internal/matcher/AllParametersMatcher&org/hamcrest/TypeSafeDiagnosingMatcher$org/jmock/internal/ParametersMatcher()Vjava/util/ListtoArray(([Ljava/lang/Object;)[Ljava/lang/Object;org/hamcrest/Description
appendText.(Ljava/lang/String;)Lorg/hamcrest/Description; appendValue.(Ljava/lang/Object;)Lorg/hamcrest/Description;append-(Ljava/lang/String;)Ljava/lang/StringBuilder;(I)Ljava/lang/StringBuilder;toString()Ljava/lang/String;matches(Ljava/lang/Object;)ZappendDescriptionOf9(Lorg/hamcrest/SelfDescribing;)Lorg/hamcrest/Description;describeMismatch/(Ljava/lang/Object;Lorg/hamcrest/Description;)Vjava/util/ArraysasList%([Ljava/lang/Object;)Ljava/util/List;
appendListf(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Iterable;)Lorg/hamcrest/Description;(Ljava/lang/Object;)V!#$%&'()
*+,I *<2A>*+<2B><02><03>- . /0 12*3,d*<2A>*+<03><04><00><06><03>-./0456 47(89:,D*<2A><03>+<2B><><04><03>-./0;2<=,V*+,<2C><07>*+,<2C><08><04><03>-. /0;2>?@=,g*<2A><03>+<2B><>, <09>
+<2B> W<03><04>-$
%'). /0;2>?A=,<00>)>6+<2B><>*+2*<2A>2,<04> ~><3E><01><><EFBFBD><1D>--. /!.'1.4"BC)/0);2)>?'DEFG,<00>a-<2D> Y<><0F><04><12><10><13>
W,+<2B>6<05>-<15>
,<2C>W<>!-<17>
,<2C><18>
W,+-<2D><05>-5 6)7.8@:V=^?.>a/0aHIaJKa>?aLC)8ME6 aJN(OPQ,M+*<2A><03><1D>W<>-
CD./0R?
ST,<00>#*<2A><>L=*<2A><>+<1C>Y*2<> S<><01><><EFBFBD>+<2B>-HIJI!L. BC#12U'6 U)(VA<W,H
*+<2B>!,<2C>"<22>- . 
/0
XI
Y?(Z[\PK
<00><><EFBFBD><<3C>y<EFBFBD>x.org/jmock/internal/matcher/MethodMatcher.class<73><73><EFBFBD><EFBFBD>1;(
)
*
+, -.
/
0
123expectedMethodLjava/lang/reflect/Method;<init>(Ljava/lang/reflect/Method;)VCodeLineNumberTableLocalVariableTablethis*Lorg/jmock/internal/matcher/MethodMatcher; matchesSafely(Ljava/lang/reflect/Method;)ZmdescribeMismatchSafely7(Ljava/lang/reflect/Method;Lorg/hamcrest/Description;)VmismatchDescriptionLorg/hamcrest/Description;
describeTo(Lorg/hamcrest/Description;)V description/(Ljava/lang/Object;Lorg/hamcrest/Description;)Vx0Ljava/lang/Object;x1(Ljava/lang/Object;)Z Signature:Lorg/hamcrest/TypeSafeMatcher<Ljava/lang/reflect/Method;>;
SourceFileMethodMatcher.javajava/lang/reflect/Method 4 5#was 6 78 9:  (org/jmock/internal/matcher/MethodMatcherorg/hamcrest/TypeSafeMatcher(Ljava/lang/Class;)Vequalsorg/hamcrest/Description
appendText.(Ljava/lang/String;)Lorg/hamcrest/Description;getName()Ljava/lang/String;!
 I *<01>*+<2B><03>    = *<2A>+<2B><04>   U,<05>+<2B><07>W<>
  G+*<2A><03><07>W<>
DH
*+<2B>,<2C><08> 

!
"A#= *+<2B><01> <09>  !$%&'PK
<00><><EFBFBD>< <09><18>222org/jmock/internal/matcher/MethodNameMatcher.class<73><73><EFBFBD><EFBFBD>1O
/
01 2
3
04
567 89
0:;
<
=>? namePatternLjava/util/regex/Pattern;<init>(Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis.Lorg/jmock/internal/matcher/MethodNameMatcher; nameRegexLjava/lang/String; matchesSafely(Ljava/lang/reflect/Method;)ZmethodLjava/lang/reflect/Method;describeMismatchSafely7(Ljava/lang/reflect/Method;Lorg/hamcrest/Description;)VitemmismatchDescriptionLorg/hamcrest/Description;
describeTo(Lorg/hamcrest/Description;)V description/(Ljava/lang/Object;Lorg/hamcrest/Description;)Vx0Ljava/lang/Object;x1(Ljava/lang/Object;)Z Signature:Lorg/hamcrest/TypeSafeMatcher<Ljava/lang/reflect/Method;>;
SourceFileMethodNameMatcher.java @A BC  DE FGH IJ was method K LM NEjava/lang/reflect/Method  ,org/jmock/internal/matcher/MethodNameMatcherorg/hamcrest/TypeSafeMatcher()Vjava/util/regex/Patterncompile-(Ljava/lang/String;)Ljava/util/regex/Pattern;getName()Ljava/lang/String;matcher3(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;java/util/regex/Matchermatches()Zorg/hamcrest/Description
appendText.(Ljava/lang/String;)Lorg/hamcrest/Description;toString! I *<2A>*+<2B><02><03>   C*<2A>+<2B><04><05><06>U,<07>+<2B><04>W<>
  !"#$G+*<2A><03> <09>W<>
%"D&H
*+<2B>
,<2C> <0B>  

'(
)"A*= *+<2B>
<EFBFBD> <0C>   '(+,-.PK
<00><><EFBFBD><VC<56><43><EFBFBD><00>2org/jmock/internal/matcher/MockObjectMatcher.class<73><73><EFBFBD><EFBFBD>1*
 
  !"
mockObjectLjava/lang/Object;<init>(Ljava/lang/Object;)VCodeLineNumberTableLocalVariableTablethis.Lorg/jmock/internal/matcher/MockObjectMatcher;matches(Ljava/lang/Object;)Zo
describeTo(Lorg/hamcrest/Description;)V descriptionLorg/hamcrest/Description; Signature.Lorg/hamcrest/BaseMatcher<Ljava/lang/Object;>;
SourceFileMockObjectMatcher.java # $ %&' (),org/jmock/internal/matcher/MockObjectMatcherorg/hamcrest/BaseMatcher()Vjava/lang/ObjecttoString()Ljava/lang/String;org/hamcrest/Description
appendText.(Ljava/lang/String;)Lorg/hamcrest/Description;!
 F
*<2A>*+<2B><02>  


 B+*<2A><02><04><03>   G+*<2A><02><03>W<>
 PK
<00><><EFBFBD><<3C>!<21>=((2org/jmock/internal/matcher/ParametersMatcher.class<73><73><EFBFBD><EFBFBD>1:
*
+,-
. /01234<init>([Ljava/lang/Object;)VCodeLineNumberTableLocalVariableTablethis.Lorg/jmock/internal/matcher/ParametersMatcher;expectedValues[Ljava/lang/Object;equalMatchersFor,([Ljava/lang/Object;)[Lorg/hamcrest/Matcher;iImatchers[Lorg/hamcrest/Matcher;LocalVariableTypeTable+[Lorg/hamcrest/Matcher<Ljava/lang/Object;>; Signature@([Ljava/lang/Object;)[Lorg/hamcrest/Matcher<Ljava/lang/Object;>;(Ljava/util/List;)VparameterMatchersLjava/util/List;+Ljava/util/List<Lorg/hamcrest/Matcher<*>;>;.(Ljava/util/List<Lorg/hamcrest/Matcher<*>;>;)VdescriptionStart()Ljava/lang/String;descriptionEnd5Lorg/hamcrest/collection/IsArray<Ljava/lang/Object;>;
SourceFileParametersMatcher.java  5org/hamcrest/Matcherorg/hamcrest/core/IsEqual 67 89(),org/jmock/internal/matcher/ParametersMatcherorg/hamcrest/collection/IsArray([Lorg/hamcrest/Matcher;)V(Ljava/lang/Object;)Vjava/util/ListtoArray(([Ljava/lang/Object;)[Ljava/lang/Object;!
 A *+<2B><01><02>
    
<00>#*<2A><>L=*<2A><>+<1C>Y*2<>S<><01><><EFBFBD>+<2B>! #  \*+<03><03><00><07><02>
 !  "#$%-<08> &%- <09># '()PK
<00><><EFBFBD><Rf<52>m77,org/jmock/lib/AssertionErrorTranslator.class<73><73><EFBFBD><EFBFBD>1&



  !INSTANCE(Lorg/jmock/lib/AssertionErrorTranslator; translate3(Lorg/jmock/api/ExpectationError;)Ljava/lang/Error;CodeLineNumberTableLocalVariableTablethise Lorg/jmock/api/ExpectationError;<init>()V<clinit>
SourceFileAssertionErrorTranslator.javajava/lang/AssertionError" #$ % &org/jmock/lib/AssertionErrorTranslator
java/lang/Object(org/jmock/api/ExpectationErrorTranslatororg/hamcrest/StringDescriptiontoString1(Lorg/hamcrest/SelfDescribing;)Ljava/lang/String;(Ljava/lang/Object;)V! 
 @ <0C>Y+<2B><02><03>  /*<2A><04>  # <0B>Y<><06><07>PK
<00><><EFBFBD>< <20>7(()org/jmock/lib/CamelCaseNamingScheme.class<73><73><EFBFBD><EFBFBD>1U
0
12
3
45
46
478
0
49
:
;
4<
=>?
0 @ABINSTANCE%Lorg/jmock/lib/CamelCaseNamingScheme;<init>()VCodeLineNumberTableLocalVariableTablethisdefaultNameFor%(Ljava/lang/Class;)Ljava/lang/String;
typeToMockLjava/lang/Class;
simpleNameLjava/lang/String;lciIcapsEndcapsrestLocalVariableTypeTableLjava/lang/Class<*>; Signature((Ljava/lang/Class<*>;)Ljava/lang/String;indexOfFirstLowerCaseLetter(Ljava/lang/String;)Ii<clinit>
SourceFileCamelCaseNamingScheme.java C DE *+F GH IJ IKjava/lang/StringBuilder LE MN OE PQR ST#org/jmock/lib/CamelCaseNamingScheme java/lang/Object$org/jmock/api/MockObjectNamingSchemejava/lang/Class getSimpleName()Ljava/lang/String;java/lang/Stringlength()I substring(II)Ljava/lang/String;(I)Ljava/lang/String; toLowerCaseappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;toStringcharAt(I)Cjava/lang/Character isLowerCase(C)Z!/*<2A><01> <00>P+<2B>M*,<2C>><1D>,<2C><04> ,<2C><04><1D>d6,<04>:,<04>:<06>Y<><05> <09>
<06>
<EFBFBD> <0B>" '08 HPPK  E!"')#"0 $ 8% & P'()*+g=+<2B><04>+<1C> <0C> <0A> <09><01><><EFBFBD><1C>$&'*  ,"-# <0B>Y<><0F><10>./PK
<00><><EFBFBD><<0F>MM'org/jmock/lib/CurrentStateMatcher.class<73><73><EFBFBD><EFBFBD>1S
7 8 9 : ;<= >?@ABCD
EF
G
HI stateNameLjava/lang/String;expectedZ<init>(Ljava/lang/String;Z)VCodeLineNumberTableLocalVariableTablethis#Lorg/jmock/lib/CurrentStateMatcher; matchesSafely(Lorg/jmock/States;)Z stateMachineLorg/jmock/States;describeMismatchSafely/(Lorg/jmock/States;Lorg/hamcrest/Description;)VmismatchDescriptionLorg/hamcrest/Description;
describeTo(Lorg/hamcrest/Description;)V description isCurrently*(Ljava/lang/String;)Lorg/hamcrest/Matcher; Signature>(Ljava/lang/String;)Lorg/hamcrest/Matcher<Lorg/jmock/States;>;RuntimeVisibleAnnotationsLorg/hamcrest/Factory;isNotCurrently/(Ljava/lang/Object;Lorg/hamcrest/Description;)Vx0Ljava/lang/Object;x1(Ljava/lang/Object;)Z2Lorg/hamcrest/TypeSafeMatcher<Lorg/jmock/States;>;
SourceFileCurrentStateMatcher.java J   KLM NOwas P QRnot a state machine that is is not !org/jmock/lib/CurrentStateMatcher org/jmock/States !" org/hamcrest/TypeSafeMatcher()Vis.(Ljava/lang/String;)Lorg/jmock/internal/State;org/jmock/internal/StateisActive()Zorg/hamcrest/Description
appendText.(Ljava/lang/String;)Lorg/hamcrest/Description;! Y*<2A>*<1C>*+<2B><03>   P+*<2A><03><00>*<2A><02><04><03> !"~0,<06>W+*<2A><03><00><00> ,<08>W,*<2A><03>W<> $/ 00 0#$%&^&+ <09>*<2A><02>
<EFBFBD> <0B>*<2A><03>W<>
!%$&&'$ ()4
<EFBFBD> Y*<04> <0A>( 
*+,- .)4
<EFBFBD> Y*<03> <0A>- 
*+,-D!/H
*+<2B>,<2C><0F>  

01
2$A3= *+<2B><0E><10>   01*456PK
<00><><EFBFBD><E<0E><><00>6org/jmock/lib/IdentityExpectationErrorTranslator.class<73><73><EFBFBD><EFBFBD>1

 INSTANCE2Lorg/jmock/lib/IdentityExpectationErrorTranslator;<init>()VCodeLineNumberTableLocalVariableTablethis translate3(Lorg/jmock/api/ExpectationError;)Ljava/lang/Error;e Lorg/jmock/api/ExpectationError;<clinit>
SourceFile'IdentityExpectationErrorTranslator.java
0org/jmock/lib/IdentityExpectationErrorTranslator java/lang/Object(org/jmock/api/ExpectationErrorTranslator!
 /*<2A><01>   6+<2B>  
 # <0B>Y<><03><04> PK
<00><><EFBFBD><<3C><><EFBFBD>BDD0org/jmock/lib/JavaReflectionImposteriser$1.class<73><73><EFBFBD><EFBFBD>18 & '
()
* +,-./val$mockObjectLorg/jmock/api/Invokable;this$0*Lorg/jmock/lib/JavaReflectionImposteriser;<init>F(Lorg/jmock/lib/JavaReflectionImposteriser;Lorg/jmock/api/Invokable;)VCodeLineNumberTableLocalVariableTablethis InnerClasses,Lorg/jmock/lib/JavaReflectionImposteriser$1;invokeS(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;proxyLjava/lang/Object;methodLjava/lang/reflect/Method;args[Ljava/lang/Object;
Exceptions0
SourceFileJavaReflectionImposteriser.javaEnclosingMethod1 23
4org/jmock/api/Invocation 56 7*org/jmock/lib/JavaReflectionImposteriser$1java/lang/Object#java/lang/reflect/InvocationHandlerjava/lang/Throwable(org/jmock/lib/JavaReflectionImposteriser imposteriseP(Lorg/jmock/api/Invokable;Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/Object;()VB(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Vorg/jmock/api/Invokable.(Lorg/jmock/api/Invocation;)Ljava/lang/Object;  
 9*+<2B>*,<2C>*<2A><03> \*<2A><02>Y+,-<2D><05><00>!* !"#$%
PK
<00><><EFBFBD><e<>֥<EFBFBD><00>.org/jmock/lib/JavaReflectionImposteriser.class<73><73><EFBFBD><EFBFBD>1S
5
6
7
89:
=
>?@
ABC
5
DEFINSTANCELorg/jmock/api/Imposteriser;<init>()VCodeLineNumberTableLocalVariableTablethis*Lorg/jmock/lib/JavaReflectionImposteriser;canImposterise(Ljava/lang/Class;)ZtypeLjava/lang/Class;LocalVariableTypeTableLjava/lang/Class<*>; Signature(Ljava/lang/Class<*>;)Z imposteriseP(Lorg/jmock/api/Invokable;Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/Object;
mockObjectLorg/jmock/api/Invokable;
mockedTypeancilliaryTypes[Ljava/lang/Class;proxiedClasses classLoaderLjava/lang/ClassLoader;Ljava/lang/Class<TT;>;[Ljava/lang/Class<*>;_<T:Ljava/lang/Object;>(Lorg/jmock/api/Invokable;Ljava/lang/Class<TT;>;[Ljava/lang/Class<*>;)TT;prepend7(Ljava/lang/Class;[Ljava/lang/Class;)[Ljava/lang/Class;firstrest@(Ljava/lang/Class<*>;[Ljava/lang/Class<*>;)[Ljava/lang/Class<*>;<clinit>
SourceFileJavaReflectionImposteriser.java  GH -.I JK*org/jmock/lib/JavaReflectionImposteriser$1 InnerClasses LM NOjava/lang/ClassP QR(org/jmock/lib/JavaReflectionImposteriser java/lang/Objectorg/jmock/api/Imposteriser isInterface()Z'org/jmock/internal/SearchingClassLoadercombineLoadersOf+([Ljava/lang/Class;)Ljava/lang/ClassLoader;F(Lorg/jmock/lib/JavaReflectionImposteriser;Lorg/jmock/api/Invokable;)Vjava/lang/reflect/ProxynewProxyInstanceb(Ljava/lang/ClassLoader;[Ljava/lang/Class;Ljava/lang/reflect/InvocationHandler;)Ljava/lang/Object;java/lang/System arraycopy*(Ljava/lang/Object;ILjava/lang/Object;II)V!
/*<2A><01> K+<2B><02> <00> !<00> *,-<2D>:<04>:<04>Y*+<2B><06><07>>  "# $ %&'&()  $* %+'+,<00>-.<00>,<2C>`<60>N-+S,-,<2C><> -<2D>') *,*/0&'& /0+'+12# <0B>
Y<EFBFBD> <0B> <0C>34<
PK
<00><><EFBFBD><<3C><>*%%(org/jmock/lib/LastWordNamingScheme.class<73><73><EFBFBD><EFBFBD>1Z
23
4
56
78
9
:
;<
5=
5>
5?
7@
7A
BC
B DEFINSTANCE&Lorg/jmock/api/MockObjectNamingScheme;defaultNameFor%(Ljava/lang/Class;)Ljava/lang/String;CodeLineNumberTableLocalVariableTablestartIthis$Lorg/jmock/lib/LastWordNamingScheme;
typeToMockLjava/lang/Class;
simpleNameLjava/lang/String;wordEndLocalVariableTypeTableLjava/lang/Class<*>; Signature((Ljava/lang/Class<*>;)Ljava/lang/String;indexOfLastLetter(Ljava/lang/String;)IiindexOfLastUpperCaseChar(Ljava/lang/String;I)IindexOfLastLowerCaseChar<init>()V<clinit>
SourceFileLastWordNamingScheme.javaG HI '(J KLM NO ,+ *+P QR ST UI VW XO YO -."org/jmock/lib/LastWordNamingScheme java/lang/Object$org/jmock/api/MockObjectNamingSchemejava/lang/Class getSimpleName()Ljava/lang/String;java/lang/StringcharAt(I)Cjava/lang/Character isUpperCase(C)Zjava/lang/Mathmax(II)I substring(I)Ljava/lang/String; toLowerCaselength()IisLetter isLowerCase! <00>9+<2B>M*,<2C>>,<1D><03><04>*,<1D>`6<04> *,<1D>6,<04><07><08> <09> #+"> 994 ! ."+# 9$%&'(h+<2B>
d=<1C>+<1C><03> <0B> <09><02><><EFBFBD><EFBFBD><1C>&'(*  !)*+m><1D>+<1D><03> <0C> <09><03><><EFBFBD><EFBFBD><1D>./02* !"),+m><1D>+<1D><03><04> <09><03><><EFBFBD><EFBFBD><1D>678:* !")-./*<2A> <0A>= /.# <0B>Y<><0F><10>01PK
<00><><EFBFBD><<3C><1E><><EFBFBD><00>%org/jmock/lib/RetroNamingScheme.class<73><73><EFBFBD><EFBFBD>11
!
 "
#
$%
&'
 ()*INSTANCE!Lorg/jmock/lib/RetroNamingScheme;<init>()VCodeLineNumberTableLocalVariableTablethisdefaultNameFor%(Ljava/lang/Class;)Ljava/lang/String;
typeToMockLjava/lang/Class;LocalVariableTypeTableLjava/lang/Class<*>; Signature((Ljava/lang/Class<*>;)Ljava/lang/String;<clinit>
SourceFileRetroNamingScheme.java java/lang/StringBuildermock +,- ./ 0/org/jmock/lib/RetroNamingScheme java/lang/Object$org/jmock/api/MockObjectNamingSchemeappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;java/lang/Class getSimpleName()Ljava/lang/String;toString!   /*<2A><01> ]<17>Y<><04>+<2B><06><05><07> # <0B>Y<> <09>
<EFBFBD>PK
<00><><EFBFBD><
<EFBFBD><04><00>)org/jmock/lib/action/ActionSequence.class<73><73><EFBFBD><EFBFBD>1W
/0
12
3 4 56 7 89 8:;
<=>
?@A BCDEactionsLjava/util/List; Signature(Ljava/util/List<Lorg/jmock/api/Action;>;iteratorLjava/util/Iterator;,Ljava/util/Iterator<Lorg/jmock/api/Action;>;<init>([Lorg/jmock/api/Action;)VCodeLineNumberTableLocalVariableTablethis%Lorg/jmock/lib/action/ActionSequence;[Lorg/jmock/api/Action;invoke.(Lorg/jmock/api/Invocation;)Ljava/lang/Object;
invocationLorg/jmock/api/Invocation;
ExceptionsF
describeTo(Lorg/hamcrest/Description;)V descriptionLorg/hamcrest/Description;
SourceFileActionSequence.java Gjava/util/ArrayListH IJ K L M N OP QRorg/jmock/api/Action #$org/jmock/api/ExpectationErrorno more actions available S , and then T UV#org/jmock/lib/action/ActionSequencejava/lang/Objectjava/lang/Throwable()Vjava/util/ArraysasList%([Ljava/lang/Object;)Ljava/util/List;(Ljava/util/Collection;)Vjava/util/List()Ljava/util/Iterator;java/util/IteratorhasNext()Znext()Ljava/lang/Object;/(Ljava/lang/String;Lorg/jmock/api/Invocation;)Vorg/hamcrest/Description
appendListf(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Iterable;)Lorg/hamcrest/Description;!
<00>a!*<2A>*<2A>Y+<2B><03><04>**<2A><05><00><07> ! !!"#$f**<2A><07><00>*<2A><07> <00>
+<2B> <00><> Y +<2B><0E> "* !*%&'()*J+*<2A><05>W<>
&' !+,-.PK
<00><><EFBFBD><<02><>}<7D><00>'org/jmock/lib/action/CustomAction.class<73><73><EFBFBD><EFBFBD>1
   descriptionLjava/lang/String;<init>(Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethis#Lorg/jmock/lib/action/CustomAction;
describeTo(Lorg/hamcrest/Description;)VLorg/hamcrest/Description;
SourceFileCustomAction.java   !org/jmock/lib/action/CustomActionjava/lang/Objectorg/jmock/api/Action()Vorg/hamcrest/Description
appendText.(Ljava/lang/String;)Lorg/hamcrest/Description;!
 F
*<2A>*+<2B><02>   

 D +*<2A><02>W<>
    PK
<00><><EFBFBD><J[<<3C><00>&org/jmock/lib/action/DoAllAction.class<73><73><EFBFBD><EFBFBD>1@
'
() * +,-.
/0 12345actions[Lorg/jmock/api/Action;<init>([Lorg/jmock/api/Action;)VCodeLineNumberTableLocalVariableTablethis"Lorg/jmock/lib/action/DoAllAction;invoke.(Lorg/jmock/api/Invocation;)Ljava/lang/Object;iI
invocationLorg/jmock/api/Invocation;resultLjava/lang/Object;
Exceptions6
describeTo(Lorg/hamcrest/Description;)V descriptionLorg/hamcrest/Description;
SourceFileDoAllAction.java 7 89  
do all of , : ;<= >? org/jmock/lib/action/DoAllActionjava/lang/Objectorg/jmock/api/Actionjava/lang/Throwable()Vclone()Ljava/lang/Object;java/util/ArraysasList%([Ljava/lang/Object;)Ljava/util/List;org/hamcrest/Description
appendListf(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Iterable;)Lorg/hamcrest/Description;!  <00>L*<2A>*+<2B><02><03><04>z"M>*<2A><04><>*<2A>2+<2B>M<><01><><EFBFBD>,<2C>  *""  !"M+*<2A><04> <09>
W<>
!"#$%&PK
<00><><EFBFBD><<3C><39><00>2org/jmock/lib/action/ReturnEnumerationAction.class<73><73><EFBFBD><EFBFBD>1F
,
-
./
01234 56
789:
collectionLjava/util/Collection; SignatureLjava/util/Collection<*>;<init>(Ljava/util/Collection;)VCodeLineNumberTableLocalVariableTablethis.Lorg/jmock/lib/action/ReturnEnumerationAction;LocalVariableTypeTable(Ljava/util/Collection<*>;)V([Ljava/lang/Object;)Varray[Ljava/lang/Object;invoke3(Lorg/jmock/api/Invocation;)Ljava/util/Enumeration;
invocationLorg/jmock/api/Invocation;
Exceptions;6(Lorg/jmock/api/Invocation;)Ljava/util/Enumeration<*>;
describeTo(Lorg/hamcrest/Description;)V descriptionLorg/hamcrest/Description;.(Lorg/jmock/api/Invocation;)Ljava/lang/Object;x0
SourceFileReturnEnumerationAction.java < = >?@ ABreturn enumeration over , C DE ,org/jmock/lib/action/ReturnEnumerationActionjava/lang/Objectorg/jmock/api/Actionjava/lang/Throwable()Vjava/util/ArraysasList%([Ljava/lang/Object;)Ljava/util/List;java/util/Collections enumeration/(Ljava/util/Collection;)Ljava/util/Enumeration;org/hamcrest/DescriptionappendValueListf(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Iterable;)Lorg/hamcrest/Description;!
  X
*<2A>*+<2B><02> 

 
<00>I *<2A>*+<2B><03><02>   <*<2A><02><04> !"#$%J+*<2A><02>W<>
"#&'A(:*+<2B> <09>) !"*+PK
<00><><EFBFBD><<3C><>,(<28><00>/org/jmock/lib/action/ReturnIteratorAction.class<73><73><EFBFBD><EFBFBD>1F
,
-
./ 01234 56
789:
collectionLjava/util/Collection; SignatureLjava/util/Collection<*>;<init>(Ljava/util/Collection;)VCodeLineNumberTableLocalVariableTablethis+Lorg/jmock/lib/action/ReturnIteratorAction;LocalVariableTypeTable(Ljava/util/Collection<*>;)V([Ljava/lang/Object;)Varray[Ljava/lang/Object;invoke0(Lorg/jmock/api/Invocation;)Ljava/util/Iterator;
invocationLorg/jmock/api/Invocation;
Exceptions;3(Lorg/jmock/api/Invocation;)Ljava/util/Iterator<*>;
describeTo(Lorg/hamcrest/Description;)V descriptionLorg/hamcrest/Description;.(Lorg/jmock/api/Invocation;)Ljava/lang/Object;x0
SourceFileReturnIteratorAction.java < = >?@ ABreturn iterator over , C DE )org/jmock/lib/action/ReturnIteratorActionjava/lang/Objectorg/jmock/api/Actionjava/lang/Throwable()Vjava/util/ArraysasList%([Ljava/lang/Object;)Ljava/util/List;java/util/Collectioniterator()Ljava/util/Iterator;org/hamcrest/DescriptionappendValueListf(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Iterable;)Lorg/hamcrest/Description;!
  X
*<2A>*+<2B><02> 

 
<00>I *<2A>*+<2B><03><02>   >
*<2A><02><00>

 !"#$%J+*<2A><02>W<>
 !&'A(:*+<2B> <09>) !"*+PK
<00><><EFBFBD><<3C><><EFBFBD>@,org/jmock/lib/action/ReturnValueAction.class<73><73><EFBFBD><EFBFBD>1.
  !" !#$%&resultLjava/lang/Object;<init>(Ljava/lang/Object;)VCodeLineNumberTableLocalVariableTablethis(Lorg/jmock/lib/action/ReturnValueAction;invoke.(Lorg/jmock/api/Invocation;)Ljava/lang/Object;
invocationLorg/jmock/api/Invocation;
Exceptions'
describeTo(Lorg/hamcrest/Description;)V descriptionLorg/hamcrest/Description;
SourceFileReturnValueAction.java (
returns ) *+ ,-&org/jmock/lib/action/ReturnValueActionjava/lang/Objectorg/jmock/api/Actionjava/lang/Throwable()Vorg/hamcrest/Description
appendText.(Ljava/lang/String;)Lorg/hamcrest/Description; appendValue.(Ljava/lang/Object;)Lorg/hamcrest/Description;!
  F
*<2A>*+<2B><02> 

 9*<2A><02> Q+<03>W+*<2A><02>W<> PK
<00><><EFBFBD><s<><73>-
-
&org/jmock/lib/action/ThrowAction.class<73><73><EFBFBD><EFBFBD>1}
C D
E
FG
HI
J
,KL MN MO
PQ
RS
CT
U
V
PWXYZ[
\
]^_`ab throwableLjava/lang/Throwable;<init>(Ljava/lang/Throwable;)VCodeLineNumberTableLocalVariableTablethis"Lorg/jmock/lib/action/ThrowAction;invoke.(Lorg/jmock/api/Invocation;)Ljava/lang/Object;
invocationLorg/jmock/api/Invocation;
Exceptionsc
describeTo(Lorg/hamcrest/Description;)V descriptionLorg/hamcrest/Description;checkTypeCompatiblity([Ljava/lang/Class;)ViIallowedExceptionTypes[Ljava/lang/Class;LocalVariableTypeTable[Ljava/lang/Class<*>; Signature([Ljava/lang/Class<*>;)V"reportIncompatibleCheckedException allowedTypesmessageLjava/lang/StringBuffer;isThrowingCheckedException()Z
SourceFileThrowAction.java d  ?@e fgh ij 12 klthrows m no pqr st ;2java/lang/StringBuffertried to throw a uv wx yz from a method that throws  no exceptions,java/lang/IllegalStateException {z |java/lang/RuntimeExceptionjava/lang/Error org/jmock/lib/action/ThrowActionjava/lang/Objectorg/jmock/api/Actionjava/lang/Throwable()Vorg/jmock/api/InvocationgetInvokedMethod()Ljava/lang/reflect/Method;java/lang/reflect/MethodgetExceptionTypes()[Ljava/lang/Class;fillInStackTrace()Ljava/lang/Throwable;org/hamcrest/Description
appendText.(Ljava/lang/String;)Lorg/hamcrest/Description; appendValue.(Ljava/lang/Object;)Lorg/hamcrest/Description;java/lang/Class
isInstance(Ljava/lang/Object;)Zappend,(Ljava/lang/String;)Ljava/lang/StringBuffer;getClass()Ljava/lang/Class;getName()Ljava/lang/String;toString(Ljava/lang/String;)V! !"F
*<2A>*+<2B><02># $
%&
'("_*<2A><03>*+<2B><04><05>*<2A><02>W*<2A><02>#$%&)*+,-."Q+<08> W+*<2A><02>
W<># !"$%&/012"<00>"=+<2B><>+2*<2A><02> <0B><04><><01><><EFBFBD>*+<2B> <0C>#%&'%*!+$ 34"%&"567 "589:;2"<00>d<> Y<>M,<0F>W,*<2A><02><11><12>W,<13>W+<2B><> ,<14>W<>'>+<2B><><1D>
,<15>W,+2<><12>W<><01><><EFBFBD><EFBFBD>Y,<2C><17><18>#2 .012%4*547<8@9G:R7X>$*6"34d%&d<6\=>7 d<89:?@"D*<2A><02><19>*<2A><02><1A><04><03>#B$ %&ABPK
<00><><EFBFBD><<3C><>v<EFBFBD><76><00>%org/jmock/lib/action/VoidAction.class<73><73><EFBFBD><EFBFBD>1*
 !"
 #$%INSTANCE!Lorg/jmock/lib/action/VoidAction;<init>()VCodeLineNumberTableLocalVariableTablethisinvoke.(Lorg/jmock/api/Invocation;)Ljava/lang/Object;
invocationLorg/jmock/api/Invocation;
Exceptions&
describeTo(Lorg/hamcrest/Description;)V descriptionLorg/hamcrest/Description;<clinit>
SourceFileVoidAction.java is void' ()org/jmock/lib/action/VoidAction
java/lang/Objectorg/jmock/api/Actionjava/lang/Throwableorg/hamcrest/Description
appendText.(Ljava/lang/String;)Lorg/hamcrest/Description;!
  /*<2A><01>  
 6<01>
 B
+<02>W<>
 

  # <0B>Y<><05><06> PK
<00><><EFBFBD><<3C>Q(<28><00>(org/jmock/lib/concurrent/Blitzer$1.class<73><73><EFBFBD><EFBFBD>1/  ! "
# $
%&'()
val$actionLjava/lang/Runnable; val$finished%Ljava/util/concurrent/CountDownLatch;this$0"Lorg/jmock/lib/concurrent/Blitzer;<init>^(Lorg/jmock/lib/concurrent/Blitzer;Ljava/lang/Runnable;Ljava/util/concurrent/CountDownLatch;)VCodeLineNumberTableLocalVariableTablethis InnerClasses$Lorg/jmock/lib/concurrent/Blitzer$1;run()V
SourceFile Blitzer.javaEnclosingMethod* +, 
 - ."org/jmock/lib/concurrent/Blitzer$1java/lang/Objectjava/lang/Runnable org/jmock/lib/concurrent/Blitzer spawnThreads;(Ljava/lang/Runnable;)Ljava/util/concurrent/CountDownLatch;#java/util/concurrent/CountDownLatch countDown  
 >*+<2B>*,<2C>*-<2D>*<2A><04>: h*<2A><02>*<2A><03><06> L*<2A><03>+<2B><> = @A@B 
PK
<00><><EFBFBD><<3C>C<EFBFBD><43>  &org/jmock/lib/concurrent/Blitzer.class<73><73><EFBFBD><EFBFBD>1`
:
; <
=> ?
@
A BC
DEF
GH
IJ
M NO NPQRDEFAULT_THREAD_COUNTI ConstantValueexecutorService&Ljava/util/concurrent/ExecutorService; actionCount<init>(I)VCodeLineNumberTableLocalVariableTablethis"Lorg/jmock/lib/concurrent/Blitzer;(II)V threadCount*(ILjava/util/concurrent/ExecutorService;)VtotalActionCount()Iblitz(Ljava/lang/Runnable;)VactionLjava/lang/Runnable;
ExceptionsS(JLjava/lang/Runnable;)V timeoutMsJ spawnThreads;(Ljava/lang/Runnable;)Ljava/util/concurrent/CountDownLatch;ifinished%Ljava/util/concurrent/CountDownLatch;shutdown()V
SourceFile Blitzer.java # 7 T UV  12 W7X YZ W[%java/util/concurrent/TimeoutException>timed out waiting for blitzed actions to complete successfully \#java/util/concurrent/CountDownLatch "org/jmock/lib/concurrent/Blitzer$1 InnerClasses ]^ _) 67 org/jmock/lib/concurrent/Blitzerjava/lang/Objectjava/lang/InterruptedExceptionjava/util/concurrent/ExecutorsnewFixedThreadPool)(I)Ljava/util/concurrent/ExecutorService;awaitjava/util/concurrent/TimeUnit MILLISECONDSLjava/util/concurrent/TimeUnit;#(JLjava/util/concurrent/TimeUnit;)Z(Ljava/lang/String;)V^(Lorg/jmock/lib/concurrent/Blitzer;Ljava/lang/Runnable;Ljava/util/concurrent/CountDownLatch;)V$java/util/concurrent/ExecutorServiceexecute!?*<05><01>
 !"#\*<2A>*<1B>*<1C><04><05> ! !"$%Y*<2A>*<1B>*,<2C><05>#$ %& !"&'/*<2A><03>) !"()A *+<2B><06><07>
-.  !" *+,-(.`*-<2D><1F><08> <09> <0A>
Y <0B> <0C><>124 !"/0*+,-
12<00>1<> Y*<2A><03>M>*<2A><03>*<2A><05>Y*+,<2C><10><00><01><><EFBFBD>,<2C>7 9:)9/F *!31!"1*+ %45678
*<2A><05><00>
J K 
!"89L
PK
<00><><EFBFBD><<08><>oo4org/jmock/lib/concurrent/DeterministicExecutor.class<73><73><EFBFBD><EFBFBD>1F
*+
* , -. -/ 01 023 4
5
6 -789:commandsLjava/util/List; Signature&Ljava/util/List<Ljava/lang/Runnable;>;<init>()VCodeLineNumberTableLocalVariableTablethis0Lorg/jmock/lib/concurrent/DeterministicExecutor;isIdle()ZrunPendingCommandscommandLjava/lang/Runnable;i$Ljava/util/Iterator; commandsToRunLocalVariableTypeTable runUntilIdleexecute(Ljava/lang/Runnable;)V
SourceFileDeterministicExecutor.java java/util/ArrayList ; < =>? @ ABjava/lang/Runnable C   DE.org/jmock/lib/concurrent/DeterministicExecutorjava/lang/Objectjava/util/concurrent/Executorjava/util/ListisEmptyiterator()Ljava/util/Iterator;java/util/IteratorhasNextnext()Ljava/lang/Object;runadd(Ljava/lang/Object;)Z!B*<2A>*<2A>Y<><03><04> 4
*<2A><04><00> 
<00>4*<2A>L*<2A>Y<><03>+<2B>M,<2C><00>,<2C><00> N-<2D>
<00><><EFBFBD><EFBFBD>()+*,3.** !"4/#$ /#%A*<2A> <0B>
*<2A> <0C><><EFBFBD><EFBFBD>568 &'D *<2A>+<2B> W<>
; <   ()PK
<00><><EFBFBD><f<>
<EFBFBD><00>Morg/jmock/lib/concurrent/DeterministicScheduler$CallableRunnableAdapter.class<73><73><EFBFBD><EFBFBD>18 (
) * +
, -.012runnableLjava/lang/Runnable;resultLjava/lang/Object; SignatureTT;this$01Lorg/jmock/lib/concurrent/DeterministicScheduler;<init>Z(Lorg/jmock/lib/concurrent/DeterministicScheduler;Ljava/lang/Runnable;Ljava/lang/Object;)VCodeLineNumberTableLocalVariableTablethisCallableRunnableAdapter InnerClassesILorg/jmock/lib/concurrent/DeterministicScheduler$CallableRunnableAdapter;LocalVariableTypeTableNLorg/jmock/lib/concurrent/DeterministicScheduler$CallableRunnableAdapter<TT;>;(Ljava/lang/Runnable;TT;)VtoString()Ljava/lang/String;call()Ljava/lang/Object;
Exceptions3()TT;L<T:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/concurrent/Callable<TT;>;
SourceFileDeterministicScheduler.java  4
5 647Gorg/jmock/lib/concurrent/DeterministicScheduler$CallableRunnableAdapterjava/lang/Objectjava/util/concurrent/Callablejava/lang/Exception()Vjava/lang/Runnablerun/org/jmock/lib/concurrent/DeterministicScheduler0 
 z*+<2B>*<2A>*,<2C>*-<2D><04><00> <00><00><00> 
  D*<2A><03><05><00>   !N*<2A><03>*<2A><04>
<00> <00>  "#$%&'
/PK
<00><><EFBFBD><<3C>5<><35><00>Corg/jmock/lib/concurrent/DeterministicScheduler$ScheduledTask.class<73><73><EFBFBD><EFBFBD>1<00> "e
#f "g "h "i<05><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "j "k
"ln
pq
f
#r
st
u
rvw
x
my
z{
m|}
~ "
"<00> <00><00><00><00>
"<00><00><00><00><00> repeatDelayJcommandLjava/util/concurrent/Callable; Signature$Ljava/util/concurrent/Callable<TT;>; isCancelledZisDone futureResultLjava/lang/Object;TT;failureLjava/lang/Exception;this$01Lorg/jmock/lib/concurrent/DeterministicScheduler;<init>S(Lorg/jmock/lib/concurrent/DeterministicScheduler;Ljava/util/concurrent/Callable;)VCodeLineNumberTableLocalVariableTablethis ScheduledTask InnerClasses?Lorg/jmock/lib/concurrent/DeterministicScheduler$ScheduledTask;LocalVariableTypeTableDLorg/jmock/lib/concurrent/DeterministicScheduler$ScheduledTask<TT;>;'(Ljava/util/concurrent/Callable<TT;>;)VH(Lorg/jmock/lib/concurrent/DeterministicScheduler;Ljava/lang/Runnable;)VLjava/lang/Runnable;I(Lorg/jmock/lib/concurrent/DeterministicScheduler;JLjava/lang/Runnable;)VtoString()Ljava/lang/String;repeats()ZgetDelay"(Ljava/util/concurrent/TimeUnit;)JunitLjava/util/concurrent/TimeUnit; compareTo!(Ljava/util/concurrent/Delayed;)IoLjava/util/concurrent/Delayed;cancel(Z)ZmayInterruptIfRunningget()Ljava/lang/Object;
Exceptions<00>()TT;4(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;timeout<00>%(JLjava/util/concurrent/TimeUnit;)TT;run()Ve(Ljava/lang/Object;)Ix0g<T:Ljava/lang/Object;>Ljava/lang/Object;Ljava/util/concurrent/ScheduledFuture<TT;>;Ljava/lang/Runnable;
SourceFileDeterministicScheduler.java 45 6^ ,- .- 23 &' () 6D<00>Gorg/jmock/lib/concurrent/DeterministicScheduler$CallableRunnableAdapterCallableRunnableAdapter 6<00>java/lang/StringBuilder EF <00><00> repeatDelay= <00><00>'java/lang/UnsupportedOperationException not supported 6<00> <00><00><00> <00><00> <00><00>'java/util/concurrent/ExecutionException 6<00> /0 TU<00> <00>Ujava/lang/Exceptionjava/util/concurrent/Delayed MN=org/jmock/lib/concurrent/DeterministicScheduler$ScheduledTaskjava/lang/Object$java/util/concurrent/ScheduledFuturejava/lang/Runnablejava/lang/InterruptedException%java/util/concurrent/TimeoutException/org/jmock/lib/concurrent/DeterministicSchedulerZ(Lorg/jmock/lib/concurrent/DeterministicScheduler;Ljava/lang/Runnable;Ljava/lang/Object;)Vappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;(J)Ljava/lang/StringBuilder;(Ljava/lang/String;)V
access$000a(Lorg/jmock/lib/concurrent/DeterministicScheduler;)Lorg/jmock/lib/concurrent/internal/DeltaQueue;,org/jmock/lib/concurrent/internal/DeltaQueueremove(Ljava/lang/Object;)Z
access$100v(Lorg/jmock/lib/concurrent/DeterministicScheduler;)Lorg/jmock/lib/concurrent/UnsupportedSynchronousOperationException;(Ljava/lang/Throwable;)Vjava/util/concurrent/Callablecall0"#$%&'()*+,-.-/0*12345678<00>%*+<2B>*<2A>*<03>*<03>*<01>*<06>*,<2C> <09>9<00> <00><00><00><00><00>$<00>:%;>%()?%;@%(+*A6B8T
*+,<2C>
<EFBFBD>9
<00> <00>:
;>
(C? 
;@6D8<00>-*+<2B>*<2A>*<03>*<03>*<01>* <20>*<2A> Y+<01> <0C> <09>9<00> <00><00><00><00><00>,<00>: -;>-&'-(C? -;@EF8]!<21> Y<>*<2A> <09><0F><11>*<2A><08><12><13>9<00>: !;>? !;@GH8K*<2A> <09><><04><03>9<00>: ;>? ;@IJ8P
<EFBFBD>Y<15><16>9<00>:
;>
KL? 
;@MN8P
<EFBFBD>Y<15><16>9<00>:
;>
OP? 
;@QR8[*<04>*<2A><01>*<2A><18>9
<00><00>:;>S-? ;@TU8s'*<2A><04> *<2A><01><19>*<2A><05><0F>Y*<2A><05><1B>*<2A><1C>9<00><00><00><00>"<00>: ';>? ';@VW*XTY8U*<2A><1D>9<00>: ;>Z'KL? ;@VW[*\,H8A*<2A><03>9<00>: ;>? ;@.H8A*<2A><04>9<00>: ;>? ;@]^8~**<2A> <09><00><1C> L*+<2B>*<04><04> 9<00> <00><00><00>:_3;>? ;@AM`8O *+<2B> <20>!<21>9<00>: ;> a0?  ;@*bcd="m< moPK
<00><><EFBFBD>< <0A>],<2C> <00> 5org/jmock/lib/concurrent/DeterministicScheduler.class<73><73><EFBFBD><EFBFBD>1<00>
'<00> '<00>
.<00><00>
<00>
'<00>
<00>
'<00>
<00>
'<00>
'<00>
<00><00>
<00>
<00> <00>
<00>
<00>
<00> <00><00>
'<00>
<00>
<00>
'<00>
<00>
'<00>
'<00>
'<00><00>
<00>
'<00> <00><00>
<00><00><00><00>
#<00><00>
#<00><00>
<00><00>
#<00>
"<00><00><00>
+<00><00><00> ScheduledTask InnerClassesCallableRunnableAdapter
deltaQueue.Lorg/jmock/lib/concurrent/internal/DeltaQueue; SignaturerLorg/jmock/lib/concurrent/internal/DeltaQueue<Lorg/jmock/lib/concurrent/DeterministicScheduler$ScheduledTask<*>;>;<init>()VCodeLineNumberTableLocalVariableTablethis1Lorg/jmock/lib/concurrent/DeterministicScheduler;tick#(JLjava/util/concurrent/TimeUnit;)VdurationJtimeUnitLjava/util/concurrent/TimeUnit; remaining runUntilIdlerunNextPendingCommand scheduledTask?Lorg/jmock/lib/concurrent/DeterministicScheduler$ScheduledTask;LocalVariableTypeTableBLorg/jmock/lib/concurrent/DeterministicScheduler$ScheduledTask<*>;isIdle()Zexecute(Ljava/lang/Runnable;)VcommandLjava/lang/Runnable;schedule\(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;delayunittaskQLorg/jmock/lib/concurrent/DeterministicScheduler$ScheduledTask<Ljava/lang/Void;>;_(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture<*>;g(Ljava/util/concurrent/Callable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;callableLjava/util/concurrent/Callable;$Ljava/util/concurrent/Callable<TV;>;DLorg/jmock/lib/concurrent/DeterministicScheduler$ScheduledTask<TV;>;<00><V:Ljava/lang/Object;>(Ljava/util/concurrent/Callable<TV;>;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture<TV;>;scheduleAtFixedRate](Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture; initialDelayperiod`(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture<*>;scheduleWithFixedDelaySLorg/jmock/lib/concurrent/DeterministicScheduler$ScheduledTask<Ljava/lang/Object;>;awaitTermination#(JLjava/util/concurrent/TimeUnit;)Ztimeout
Exceptions<00> invokeAll((Ljava/util/Collection;)Ljava/util/List;tasksLjava/util/Collection;=Ljava/util/Collection<+Ljava/util/concurrent/Callable<TT;>;>;<00><T:Ljava/lang/Object;>(Ljava/util/Collection<+Ljava/util/concurrent/Callable<TT;>;>;)Ljava/util/List<Ljava/util/concurrent/Future<TT;>;>;H(Ljava/util/Collection;JLjava/util/concurrent/TimeUnit;)Ljava/util/List;<00><T:Ljava/lang/Object;>(Ljava/util/Collection<+Ljava/util/concurrent/Callable<TT;>;>;JLjava/util/concurrent/TimeUnit;)Ljava/util/List<Ljava/util/concurrent/Future<TT;>;>; invokeAny*(Ljava/util/Collection;)Ljava/lang/Object;<00>X<T:Ljava/lang/Object;>(Ljava/util/Collection<+Ljava/util/concurrent/Callable<TT;>;>;)TT;J(Ljava/util/Collection;JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;<00>x<T:Ljava/lang/Object;>(Ljava/util/Collection<+Ljava/util/concurrent/Callable<TT;>;>;JLjava/util/concurrent/TimeUnit;)TT;
isShutdown isTerminatedshutdown shutdownNow()Ljava/util/List;(()Ljava/util/List<Ljava/lang/Runnable;>;submit>(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Future;$Ljava/util/concurrent/Callable<TT;>;^<T:Ljava/lang/Object;>(Ljava/util/concurrent/Callable<TT;>;)Ljava/util/concurrent/Future<TT;>;3(Ljava/lang/Runnable;)Ljava/util/concurrent/Future;6(Ljava/lang/Runnable;)Ljava/util/concurrent/Future<*>;E(Ljava/lang/Runnable;Ljava/lang/Object;)Ljava/util/concurrent/Future;resultLjava/lang/Object;TT;Q<T:Ljava/lang/Object;>(Ljava/lang/Runnable;TT;)Ljava/util/concurrent/Future<TT;>;toTicks#(JLjava/util/concurrent/TimeUnit;)JblockingOperationsNotSupportedE()Lorg/jmock/lib/concurrent/UnsupportedSynchronousOperationException;shutdownNotSupported+()Ljava/lang/UnsupportedOperationException;
access$000a(Lorg/jmock/lib/concurrent/DeterministicScheduler;)Lorg/jmock/lib/concurrent/internal/DeltaQueue;x0
access$100v(Lorg/jmock/lib/concurrent/DeterministicScheduler;)Lorg/jmock/lib/concurrent/UnsupportedSynchronousOperationException;
SourceFileDeterministicScheduler.java <00><00> 34 78,org/jmock/lib/concurrent/internal/DeltaQueue <00><00> ><00> E8 <00>L KL F8 <00><00>=org/jmock/lib/concurrent/DeterministicScheduler$ScheduledTask <00>8 <00>L <00>A <00><00> <00>L S<00><00> <00>C QR 7<00> 7<00> c_ 7<00> <00><00> QX <00>Gorg/jmock/lib/concurrent/DeterministicScheduler$CallableRunnableAdapter 7<00> <00> <00>C <00><00>Aorg/jmock/lib/concurrent/UnsupportedSynchronousOperationExceptionjava/lang/StringBuilder6cannot perform blocking wait on a task scheduled on a <00><00>/org/jmock/lib/concurrent/DeterministicScheduler<00> <00><00> <00><00> 7<00>'java/lang/UnsupportedOperationExceptionshutdown not supportedjava/lang/Object-java/util/concurrent/ScheduledExecutorServicejava/lang/InterruptedException'java/util/concurrent/ExecutionException%java/util/concurrent/TimeoutException(J)J
isNotEmptypop()Ljava/lang/Object;runrepeats repeatDelayadd(JLjava/lang/Object;)VisEmpty()Jjava/util/concurrent/TimeUnitSECONDSH(Lorg/jmock/lib/concurrent/DeterministicScheduler;Ljava/lang/Runnable;)VS(Lorg/jmock/lib/concurrent/DeterministicScheduler;Ljava/util/concurrent/Callable;)VI(Lorg/jmock/lib/concurrent/DeterministicScheduler;JLjava/lang/Runnable;)VZ(Lorg/jmock/lib/concurrent/DeterministicScheduler;Ljava/lang/Runnable;Ljava/lang/Object;)V MILLISECONDSconvertappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;java/lang/ClassgetName()Ljava/lang/String;toString(Ljava/lang/String;)V!'./3456789B*<2A>*<2A>Y<><05><02>:<00>; <=>?9<00>)*-<2D>7*<2A><04>7*<2A>*<2A><02> <09>
 <09><><EFBFBD><EFBFBD><EFBFBD>:),-/(0;*)<=)@A)BC!DAE89A*<2A>
<EFBFBD>
*<2A> <0B><><EFBFBD><EFBFBD>:78:; <=F89y#*<2A><02> <0C> L+<2B>+<2B><0F>*<2A>+<2B>+<2B><11>:@ BDE"G;#<= GHI  GJKL9F*<2A><02><12>*<2A><02> <09><><04><03>:P; <=MN9C *+ <09><14>W<>:
T
U; <= OPQR9<00><1E> Y*+<2B>:*<2A>* <04><05><05>:X YZ;4<=OPSATC UHI  UV5WQX9<00><1E> Y*+<2B>:*<2A>* <04><05><05>:^ _`;4<=YZSATC UHIY[ U\5]^_9] *+ <06><18>:d;4 <= OP `A aA TC5bc_9<00>&<26> Y**<06>+<2B>:*<2A>* <06><07><07>:hi#j;>&<=&OP&`A&SA&TCUHI Ud5bef9C*<2A><01>:n; <=gATChijk9K*<2A><01>:r;<=lmI lnhi5ojp9_*<2A><01>:v;*<=lmgATCI lnhi5qrs9K*<2A><01>:|;<=lmI lnhit5urv9_*<2A><01>:<00>;*<=lmgATCI lnhitw5xyL9/*<2A><1A>:<00>; <=zL9/*<2A><1A>:<00>; <={89/*<2A><1A>:<00>; <=|}9/*<2A><1A>:<00>; <=5~<00>9P
*+ <09><14><1B>:<00>;
<=
YZI 
Y<00>5<00><00>9;*+<01><1C>:<00>;<=OP5<00><00>9_*<2A>Y*+,<2C><1E><1F>:<00>; <=OP<00><00>I <00><00>5<00><00><00>9G <09> -<2D>!<21>:;  <= @A BC<00><00>9J <20>"Y<>#Y<>$%<25>&'<27>(<28>&<26>)<29>*<2A>: ;  <=<00><00>94
<EFBFBD>+Y,<2C>-<2D>: ; 
<=<00><00>9/*<2A><02>:; <00>=<00><00>9/*<2A><01>:; <00>=<00><00>1 '0'2PK
<00><><EFBFBD><>TT-org/jmock/lib/concurrent/Synchroniser$1.class<73><73><EFBFBD><EFBFBD>1.  !
"
#$%&val$mockObjectLorg/jmock/api/Invokable;this$0'Lorg/jmock/lib/concurrent/Synchroniser;<init>C(Lorg/jmock/lib/concurrent/Synchroniser;Lorg/jmock/api/Invokable;)VCodeLineNumberTableLocalVariableTablethis InnerClasses)Lorg/jmock/lib/concurrent/Synchroniser$1;invoke.(Lorg/jmock/api/Invocation;)Ljava/lang/Object;
invocationLorg/jmock/api/Invocation;
Exceptions'
SourceFileSynchroniser.javaEnclosingMethod( )*
 + ,-'org/jmock/lib/concurrent/Synchroniser$1java/lang/Objectorg/jmock/api/Invokablejava/lang/Throwable%org/jmock/lib/concurrent/SynchronisersynchroniseAccessTo4(Lorg/jmock/api/Invokable;)Lorg/jmock/api/Invokable;()V
access$000n(Lorg/jmock/lib/concurrent/Synchroniser;Lorg/jmock/api/Invokable;Lorg/jmock/api/Invocation;)Ljava/lang/Object;  
 9*+<2B>*,<2C>*<2A><03>H A *<2A>*<2A>+<2B><04>J  
PK
<00><><EFBFBD><<3C> j<>5 5 +org/jmock/lib/concurrent/Synchroniser.class<73><73><EFBFBD><EFBFBD>1<00>
F
GH I JK
G
LM
N OP QR
STU
GV
W
XY
Z
[\]
` ab
cdefsyncLjava/lang/Object;
firstErrorLjava/lang/Error;<init>()VCodeLineNumberTableLocalVariableTablethis'Lorg/jmock/lib/concurrent/Synchroniser; waitUntil&(Lorg/jmock/internal/StatePredicate;)Vp#Lorg/jmock/internal/StatePredicate;
Exceptionsg'(Lorg/jmock/internal/StatePredicate;J)V timeoutMsJQ(Lorg/jmock/internal/StatePredicate;Lorg/jmock/lib/concurrent/internal/Timeout;)Ve'Ljava/util/concurrent/TimeoutException;timeout+Lorg/jmock/lib/concurrent/internal/Timeout;synchroniseAccessTo4(Lorg/jmock/api/Invokable;)Lorg/jmock/api/Invokable;
mockObjectLorg/jmock/api/Invokable;synchroniseInvocationG(Lorg/jmock/api/Invokable;Lorg/jmock/api/Invocation;)Ljava/lang/Object;
invocationLorg/jmock/api/Invocation;h
access$000n(Lorg/jmock/lib/concurrent/Synchroniser;Lorg/jmock/api/Invokable;Lorg/jmock/api/Invocation;)Ljava/lang/Object;x0x1x2
SourceFileSynchroniser.java :; !"java/lang/Object   1org/jmock/lib/concurrent/internal/InfiniteTimeout (1.org/jmock/lib/concurrent/internal/FixedTimeout !ij klm no pi%java/util/concurrent/TimeoutExceptionjava/lang/StringBuildertimed out waiting for qrs tu vwx yz'org/jmock/lib/concurrent/Synchroniser$1 InnerClasses !{| }~ "java/lang/Error%org/jmock/lib/concurrent/Synchroniserorg/jmock/api/ThreadingPolicyjava/lang/InterruptedExceptionjava/lang/Throwable(J)V!org/jmock/internal/StatePredicateisActive()Z)org/jmock/lib/concurrent/internal/Timeout timeRemaining()Jwaitappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;org/hamcrest/StringDescriptionasString1(Lorg/hamcrest/SelfDescribing;)Ljava/lang/String;toString()Ljava/lang/String;org/junit/Assertfail(Ljava/lang/String;)VC(Lorg/jmock/lib/concurrent/Synchroniser;Lorg/jmock/api/Invokable;)Vorg/jmock/api/Invokableinvoke.(Lorg/jmock/api/Invocation;)Ljava/lang/Object; notifyAll! !"#G*<2A>*<2A>Y<><02>*<01><05>$% &'()#E *+<2B>Y<><07><08>$
% &% &' *+,-(.#P*+<2B> Y <20>
<EFBFBD><08>$
1 2% &'*+/0,-(1#<00>W*<2A>YN<59>+<2B> <00>=*<2A>,<2C> <00> <0A><><EFBFBD>:*<2A><05>*<2A><05><>Y<><11>+<2B><13><12><14><15><><EFBFBD>
:-<2D><05><> LOOSO$. 568A :";)<.?GAJCVE%*"%23W&'W*+W45,-67#>
<EFBFBD>Y*+<2B><17>$H%
&'
89:;#<00>A*<2A>YN<59>+,<2C>:*<2A><04>-<2D><04>:*<2A><05> *<04><04>:*<2A><04><05>:-<2D><06>.0.:>:$& PR[TU%V+X.[:]%*2 A&'A89A<=,>?@#E*+,<2C><01>$% A'B9C=,>DE_
PK
<00><><EFBFBD><Ϸpk<70><00>Gorg/jmock/lib/concurrent/UnsupportedSynchronousOperationException.class<73><73><EFBFBD><EFBFBD>1
<init>(Ljava/lang/String;)VCodeLineNumberTableLocalVariableTablethisCLorg/jmock/lib/concurrent/UnsupportedSynchronousOperationException;messageLjava/lang/String;
SourceFile-UnsupportedSynchronousOperationException.java Aorg/jmock/lib/concurrent/UnsupportedSynchronousOperationException'java/lang/UnsupportedOperationException!>*+<2B><01>
  
  PK
<00><><EFBFBD><zC)<29>667org/jmock/lib/concurrent/internal/DeltaQueue$Node.class<73><73><EFBFBD><EFBFBD>1'
   !#$valueLjava/lang/Object; SignatureTT;delayJnextNode InnerClasses3Lorg/jmock/lib/concurrent/internal/DeltaQueue$Node;8Lorg/jmock/lib/concurrent/internal/DeltaQueue$Node<TT;>;<init>(Ljava/lang/Object;J)VCodeLineNumberTableLocalVariableTablethisnanosLocalVariableTypeTable(TT;J)V(<T:Ljava/lang/Object;>Ljava/lang/Object;
SourceFileDeltaQueue.java %   &1org/jmock/lib/concurrent/internal/DeltaQueue$Nodejava/lang/Object()V,org/jmock/lib/concurrent/internal/DeltaQueue  
   ~*<2A>*<01>*+<2B>* <20><04>
     
  
"
PK
<00><><EFBFBD><
<12>5^ ^ 2org/jmock/lib/concurrent/internal/DeltaQueue.class<73><73><EFBFBD><EFBFBD>1q
M N
O P QR
S TUV
WX
M
Y
Z[
\]^_
`a
bc
defNode InnerClasseshead3Lorg/jmock/lib/concurrent/internal/DeltaQueue$Node; Signature8Lorg/jmock/lib/concurrent/internal/DeltaQueue$Node<TT;>;<init>()VCodeLineNumberTableLocalVariableTablethis.Lorg/jmock/lib/concurrent/internal/DeltaQueue;LocalVariableTypeTable3Lorg/jmock/lib/concurrent/internal/DeltaQueue<TT;>;isEmpty()Z
isNotEmptynext()Ljava/lang/Object;()TT;delay()Jadd(JLjava/lang/Object;)VJvalueLjava/lang/Object;newNodeprevTT;(JTT;)Vtick(J)Jleftover timeUnitspoppoppedremove(Ljava/lang/Object;)Zelementnode(TT;)ZtoString()Ljava/lang/String;sbLjava/lang/StringBuilder;(<T:Ljava/lang/Object;>Ljava/lang/Object;
SourceFileDeltaQueue.java !"  *+ 56 041org/jmock/lib/concurrent/internal/DeltaQueue$Node !g -java/lang/IllegalStateException8cannot pop the head element when it has a non-zero delay !hjava/lang/StringBuilder ijk lG mn[, + mo: mp] FG,org/jmock/lib/concurrent/internal/DeltaQueuejava/lang/Object(Ljava/lang/Object;J)V(Ljava/lang/String;)VgetClass()Ljava/lang/Class;java/lang/Class getSimpleNameappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;(J)Ljava/lang/StringBuilder;-(Ljava/lang/Object;)Ljava/lang/StringBuilder;!
!"#J
*<2A>*<01><02>$
% 
&'( 
&)*+#I *<2A><02><04><03>$%  &'(  &),+#I *<2A><03><04><03>$%  &'(  &)-.#D*<2A><02><04>$% &'( &)/01#D*<2A><02><05>$% &'( &)23#?u<>Y-<1F>::*<2A>:<06>.<06><04><05><> Y<><06>e<>:<06>:<06><><EFBFBD><05> *<04><02>
<04><06>Y<><04>e<><06><08>$:# %&(')6*:+D.I/R2Y5^6m8t:%>u&'u04u56 j7g8a-(4u&)u59 j7 g8 a- :;<#<00>8*<2A><02> <09>*<2A><02><1F><>*<2A>Y<>e<> <09>*<2A><02>eB*<2A> <09>!<21>$">? AB"C$F.G6H% .
=48&'8>4( 8&)?.#<00>+*<2A><02> <09><> <0A> Y
<EFBFBD> <0B>*<2A><02>L**<2A><02><08>+<2B>$M NQR)S%+&' @6(+&) @9/AB#<00>SM*<2A>N-<2D>-<2D>+<2B> -M-<2D>N<><4E><EFBFBD>-<2D><03>-<2D><08>-<2D>Y<>-<2D>a<>,<2C>*-<2D><08><02> ,-<2D><08><04>$6 WXYZ[^!_#b*c:f>gIjQm%*S&'SC6Q8LD(*S&)SC9Q8 LD EFG#<00>_<> Y<> L+*<2A><0E><0F><11>W*<2A>M,<2C>4,*<2A><02>
+<12>W+<13>,<2C><05><15>,<2C><04>W,<2C>M<><4D><EFBFBD>+<17>W+<2B><18>$*
rsvw"x*y1{K<00>S<00>Z<00>% _&'WHIAD(_&)AD JKL

PK
<00><><EFBFBD><R<><52><EFBFBD>  4org/jmock/lib/concurrent/internal/FixedTimeout.class<73><73><EFBFBD><EFBFBD>1;
" #
$% &'(
")
*
+,
-
./01durationJstart<init>(J)VCodeLineNumberTableLocalVariableTablethis0Lorg/jmock/lib/concurrent/internal/FixedTimeout; timeRemaining()JnowtimeLeft
Exceptions
SourceFileFixedTimeout.java 2 3 4 %java/util/concurrent/TimeoutExceptionjava/lang/StringBuildertimed out after 56 57 ms 89 :.org/jmock/lib/concurrent/internal/FixedTimeoutjava/lang/Object)org/jmock/lib/concurrent/internal/Timeout()Vjava/lang/SystemcurrentTimeMillisappend-(Ljava/lang/String;)Ljava/lang/StringBuilder;(J)Ljava/lang/StringBuilder;toString()Ljava/lang/String;(Ljava/lang/String;)V!Q*<2A>*<1F>*<2A><03><04> <00>;<3B>@*<2A>*<2A>eeB! <09><>&<26>Y<>Y<><08> *<2A><02>
 <0B> <09> <0C> <0A>!<21>9 ;7+ !PK
<00><><EFBFBD><8<>L+7org/jmock/lib/concurrent/internal/InfiniteTimeout.class<73><73><EFBFBD><EFBFBD>1
<init>()VCodeLineNumberTableLocalVariableTablethis3Lorg/jmock/lib/concurrent/internal/InfiniteTimeout; timeRemaining()J
Exceptions
SourceFileInfiniteTimeout.java 1org/jmock/lib/concurrent/internal/InfiniteTimeoutjava/lang/Object)org/jmock/lib/concurrent/internal/Timeout%java/util/concurrent/TimeoutException!/*<2A><01>

 , <09> 
PK
<00><><EFBFBD><<3C>E6<><00>/org/jmock/lib/concurrent/internal/Timeout.class<73><73><EFBFBD><EFBFBD>1  
 timeRemaining()J
Exceptions 
SourceFile Timeout.java)org/jmock/lib/concurrent/internal/Timeoutjava/lang/Object%java/util/concurrent/TimeoutExceptionPK
<00><><EFBFBD><<3C>1T<11><00>#org/jmock/syntax/ActionClause.class<73><73><EFBFBD><EFBFBD>1 will(Lorg/jmock/api/Action;)V
SourceFileActionClause.javaorg/jmock/syntax/ActionClausejava/lang/ObjectPK
<00><><EFBFBD><<17>p/<2F><00>0org/jmock/syntax/ArgumentConstraintPhrases.class<73><73><EFBFBD><EFBFBD>1with*(Lorg/hamcrest/Matcher;)Ljava/lang/Object; Signature6<T:Ljava/lang/Object;>(Lorg/hamcrest/Matcher<TT;>;)TT;(Lorg/hamcrest/Matcher;)Z.(Lorg/hamcrest/Matcher<Ljava/lang/Boolean;>;)Z(Lorg/hamcrest/Matcher;)B+(Lorg/hamcrest/Matcher<Ljava/lang/Byte;>;)B(Lorg/hamcrest/Matcher;)S,(Lorg/hamcrest/Matcher<Ljava/lang/Short;>;)S(Lorg/hamcrest/Matcher;)I.(Lorg/hamcrest/Matcher<Ljava/lang/Integer;>;)I(Lorg/hamcrest/Matcher;)J+(Lorg/hamcrest/Matcher<Ljava/lang/Long;>;)J(Lorg/hamcrest/Matcher;)F,(Lorg/hamcrest/Matcher<Ljava/lang/Float;>;)F(Lorg/hamcrest/Matcher;)D-(Lorg/hamcrest/Matcher<Ljava/lang/Double;>;)D
SourceFileArgumentConstraintPhrases.java*org/jmock/syntax/ArgumentConstraintPhrasesjava/lang/Object 
   PK
<00><><EFBFBD><<3C>4<EFBFBD><18><00>(org/jmock/syntax/CardinalityClause.class<73><73><EFBFBD><EFBFBD>1exactly$(I)Lorg/jmock/syntax/ReceiverClause;atLeastbetween%(II)Lorg/jmock/syntax/ReceiverClause;atMostoneOf&(Ljava/lang/Object;)Ljava/lang/Object; Signature<T:Ljava/lang/Object;>(TT;)TT;oneallowing7(Lorg/hamcrest/Matcher;)Lorg/jmock/syntax/MethodClause;:(Lorg/hamcrest/Matcher<*>;)Lorg/jmock/syntax/MethodClause;ignoringnever
SourceFileCardinalityClause.java"org/jmock/syntax/CardinalityClausejava/lang/Object 
  
  
   
   
  PK
<00><><EFBFBD><=<1F>"yy#org/jmock/syntax/MethodClause.class<73><73><EFBFBD><EFBFBD>1 
 method;(Lorg/hamcrest/Matcher;)Lorg/jmock/syntax/ParametersClause; SignatureW(Lorg/hamcrest/Matcher<Ljava/lang/reflect/Method;>;)Lorg/jmock/syntax/ParametersClause;7(Ljava/lang/String;)Lorg/jmock/syntax/ParametersClause;
SourceFileMethodClause.javaorg/jmock/syntax/MethodClausejava/lang/Object PK
<00><><EFBFBD><F<><46><EFBFBD>'''org/jmock/syntax/ParametersClause.class<73><73><EFBFBD><EFBFBD>1  with([Lorg/hamcrest/Matcher;)V Signature([Lorg/hamcrest/Matcher<*>;)VwithNoArguments()V
SourceFileParametersClause.java!org/jmock/syntax/ParametersClausejava/lang/Objectorg/jmock/syntax/MethodClause<04> 
 PK
<00><><EFBFBD><v_<76>1pp%org/jmock/syntax/ReceiverClause.class<73><73><EFBFBD><EFBFBD>1   of&(Ljava/lang/Object;)Ljava/lang/Object; Signature<T:Ljava/lang/Object;>(TT;)TT;7(Lorg/hamcrest/Matcher;)Lorg/jmock/syntax/MethodClause;:(Lorg/hamcrest/Matcher<*>;)Lorg/jmock/syntax/MethodClause;
SourceFileReceiverClause.javaorg/jmock/syntax/ReceiverClausejava/lang/Object 
PK
<00><><EFBFBD><<3C>2$<24>#org/jmock/syntax/StatesClause.class<73><73><EFBFBD><EFBFBD>1  
is.(Ljava/lang/String;)Lorg/jmock/internal/State;isNot7(Ljava/lang/String;)Lorg/jmock/internal/StatePredicate;
SourceFileStatesClause.javaorg/jmock/syntax/StatesClausejava/lang/ObjectPK
<00><><EFBFBD><<3C><><EFBFBD>W<EFBFBD><00>!org/jmock/syntax/WithClause.class<73><73><EFBFBD><EFBFBD>1#!" booleanIs(Lorg/hamcrest/Matcher;)Z Signature(Lorg/hamcrest/Matcher<*>;)ZbyteIs(Lorg/hamcrest/Matcher;)B(Lorg/hamcrest/Matcher<*>;)BcharIs(Lorg/hamcrest/Matcher;)C(Lorg/hamcrest/Matcher<*>;)CshortIs(Lorg/hamcrest/Matcher;)S(Lorg/hamcrest/Matcher<*>;)SintIs(Lorg/hamcrest/Matcher;)I(Lorg/hamcrest/Matcher<*>;)IlongIs(Lorg/hamcrest/Matcher;)J(Lorg/hamcrest/Matcher<*>;)JfloatIs(Lorg/hamcrest/Matcher;)F(Lorg/hamcrest/Matcher<*>;)FdoubleIs(Lorg/hamcrest/Matcher;)D(Lorg/hamcrest/Matcher<*>;)Dis*(Lorg/hamcrest/Matcher;)Ljava/lang/Object;4<T:Ljava/lang/Object;>(Lorg/hamcrest/Matcher<*>;)TT;
SourceFileWithClause.javaorg/jmock/syntax/WithClausejava/lang/Object  
   PK
<00>Y!<<3C><1F>_<EFBFBD>-<00>-org/jmock/Expectations.javapackage org.jmock;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.hamcrest.CoreMatchers;
import org.hamcrest.Matcher;
import org.hamcrest.core.IsAnything;
import org.hamcrest.core.IsEqual;
import org.hamcrest.core.IsInstanceOf;
import org.hamcrest.core.IsNot;
import org.hamcrest.core.IsNull;
import org.hamcrest.core.IsSame;
import org.jmock.api.Action;
import org.jmock.internal.Cardinality;
import org.jmock.internal.ChangeStateSideEffect;
import org.jmock.internal.ExpectationBuilder;
import org.jmock.internal.ExpectationCollector;
import org.jmock.internal.InStateOrderingConstraint;
import org.jmock.internal.InvocationExpectationBuilder;
import org.jmock.internal.State;
import org.jmock.internal.StatePredicate;
import org.jmock.lib.action.ActionSequence;
import org.jmock.lib.action.DoAllAction;
import org.jmock.lib.action.ReturnEnumerationAction;
import org.jmock.lib.action.ReturnIteratorAction;
import org.jmock.lib.action.ReturnValueAction;
import org.jmock.lib.action.ThrowAction;
import org.jmock.syntax.ActionClause;
import org.jmock.syntax.ArgumentConstraintPhrases;
import org.jmock.syntax.CardinalityClause;
import org.jmock.syntax.MethodClause;
import org.jmock.syntax.ReceiverClause;
import org.jmock.syntax.WithClause;
/**
* Provides most of the syntax of jMock's "domain-specific language" API.
* The methods of this class don't make any sense on their own, so the
* Javadoc is rather sparse. Consult the documentation on the jMock
* website for information on how to use this API.
*
* @author nat
*
*/
public class Expectations implements ExpectationBuilder,
CardinalityClause, ArgumentConstraintPhrases, ActionClause
{
private List<InvocationExpectationBuilder> builders = new ArrayList<InvocationExpectationBuilder>();
private InvocationExpectationBuilder currentBuilder = null;
protected final WithClause with = new WithClause() {
public boolean booleanIs(Matcher<?> matcher) {
addParameterMatcher(matcher);
return false;
}
public byte byteIs(Matcher<?> matcher) {
addParameterMatcher(matcher);
return 0;
}
public char charIs(Matcher<?> matcher) {
addParameterMatcher(matcher);
return 0;
}
public double doubleIs(Matcher<?> matcher) {
addParameterMatcher(matcher);
return 0;
}
public float floatIs(Matcher<?> matcher) {
addParameterMatcher(matcher);
return 0;
}
public int intIs(Matcher<?> matcher) {
addParameterMatcher(matcher);
return 0;
}
public long longIs(Matcher<?> matcher) {
addParameterMatcher(matcher);
return 0;
}
public short shortIs(Matcher<?> matcher) {
addParameterMatcher(matcher);
return 0;
}
public <T> T is(Matcher<?> matcher) {
addParameterMatcher(matcher);
return null;
}
};
private void initialiseExpectationCapture(Cardinality cardinality) {
checkLastExpectationWasFullySpecified();
currentBuilder = new InvocationExpectationBuilder();
currentBuilder.setCardinality(cardinality);
builders.add(currentBuilder);
}
public void buildExpectations(Action defaultAction, ExpectationCollector collector) {
checkLastExpectationWasFullySpecified();
for (InvocationExpectationBuilder builder : builders) {
collector.add(builder.toExpectation(defaultAction));
}
}
protected InvocationExpectationBuilder currentBuilder() {
if (currentBuilder == null) {
throw new IllegalStateException("no expectations have been specified " +
"(did you forget to to specify the cardinality of the first expectation?)");
}
return currentBuilder;
}
private void checkLastExpectationWasFullySpecified() {
if (currentBuilder != null) {
currentBuilder.checkWasFullySpecified();
}
}
/*
* Syntactic sugar
*/
public ReceiverClause exactly(int count) {
initialiseExpectationCapture(Cardinality.exactly(count));
return currentBuilder;
}
// Makes the entire expectation more readable than one
public <T> T oneOf(T mockObject) {
return exactly(1).of(mockObject);
}
/**
* @deprecated Use {@link #oneOf(Object) oneOf} instead.
*/
public <T> T one (T mockObject) {
return oneOf(mockObject);
}
public ReceiverClause atLeast(int count) {
initialiseExpectationCapture(Cardinality.atLeast(count));
return currentBuilder;
}
public ReceiverClause between(int minCount, int maxCount) {
initialiseExpectationCapture(Cardinality.between(minCount, maxCount));
return currentBuilder;
}
public ReceiverClause atMost(int count) {
initialiseExpectationCapture(Cardinality.atMost(count));
return currentBuilder;
}
public MethodClause allowing(Matcher<?> mockObjectMatcher) {
return atLeast(0).of(mockObjectMatcher);
}
public <T> T allowing(T mockObject) {
return atLeast(0).of(mockObject);
}
public <T> T ignoring(T mockObject) {
return allowing(mockObject);
}
public MethodClause ignoring(Matcher<?> mockObjectMatcher) {
return allowing(mockObjectMatcher);
}
public <T> T never(T mockObject) {
return exactly(0).of(mockObject);
}
private void addParameterMatcher(Matcher<?> matcher) {
currentBuilder().addParameterMatcher(matcher);
}
/**
* Alternatively, use with.<T>is instead, which will work with untyped Hamcrest matchers
*/
public <T> T with(Matcher<T> matcher) {
addParameterMatcher(matcher);
return null;
}
/**
* Alternatively, use with.<T>is instead, which will work with untyped Hamcrest matchers
*/
public boolean with(Matcher<Boolean> matcher) {
addParameterMatcher(matcher);
return false;
}
/**
* Alternatively, use with.<T>is instead, which will work with untyped Hamcrest matchers
*/
public byte with(Matcher<Byte> matcher) {
addParameterMatcher(matcher);
return 0;
}
/**
* Alternatively, use with.<T>is instead, which will work with untyped Hamcrest matchers
*/
public short with(Matcher<Short> matcher) {
addParameterMatcher(matcher);
return 0;
}
/**
* Alternatively, use with.<T>is instead, which will work with untyped Hamcrest matchers
*/
public char with(Matcher<Character> matcher) {
addParameterMatcher(matcher);
return 0;
}
/**
* Alternatively, use with.<T>is instead, which will work with untyped Hamcrest matchers
*/
public int with(Matcher<Integer> matcher) {
addParameterMatcher(matcher);
return 0;
}
/**
* Alternatively, use with.<T>is instead, which will work with untyped Hamcrest matchers
*/
public long with(Matcher<Long> matcher) {
addParameterMatcher(matcher);
return 0;
}
/**
* Alternatively, use with.<T>is instead, which will work with untyped Hamcrest matchers
*/
public float with(Matcher<Float> matcher) {
addParameterMatcher(matcher);
return 0.0f;
}
/**
* Alternatively, use with.<T>is instead, which will work with untyped Hamcrest matchers
*/
public double with(Matcher<Double> matcher) {
addParameterMatcher(matcher);
return 0.0;
}
public boolean with(boolean value) {
addParameterMatcher(equal(value));
return false;
}
public byte with(byte value) {
addParameterMatcher(equal(value));
return 0;
}
public short with(short value) {
addParameterMatcher(equal(value));
return 0;
}
public char with(char value) {
addParameterMatcher(equal(value));
return 0;
}
public int with(int value) {
addParameterMatcher(equal(value));
return 0;
}
public long with(long value) {
addParameterMatcher(equal(value));
return 0;
}
public float with(float value) {
addParameterMatcher(equal(value));
return 0;
}
public double with(double value) {
addParameterMatcher(equal(value));
return 0;
}
public <T> T with(T value) {
addParameterMatcher(equal(value));
return value;
}
public void will(Action action) {
currentBuilder().setAction(action);
}
/* Common constraints
*/
public static <T> Matcher<T> equal(T value) {
return new IsEqual<T>(value);
}
public static <T> Matcher<T> same(T value) {
return new IsSame<T>(value);
}
public static <T> Matcher<T> any(Class<T> type) {
return CoreMatchers.any(type);
}
public static <T> Matcher<T> anything() {
return new IsAnything<T>();
}
/**
* @deprecated
* use {@link #aNonNull} or {@link #any} until type inference actually works in a future version of Java
*/
@Deprecated
public static Matcher<Object> a(Class<?> type) {
return new IsInstanceOf(type);
}
/**
* @deprecated
* use {@link #aNonNull} or {@link #any} until type inference actually works in a future version of Java
*/
@Deprecated
public static Matcher<Object> an(Class<?> type) {
return new IsInstanceOf(type);
}
public static <T> Matcher<T> aNull(@SuppressWarnings("unused") Class<T> type) {
return new IsNull<T>();
}
public static <T> Matcher<T> aNonNull(@SuppressWarnings("unused") Class<T> type) {
return new IsNot<T>(new IsNull<T>());
}
/* Common actions
*/
public static Action returnValue(Object result) {
return new ReturnValueAction(result);
}
public static Action throwException(Throwable throwable) {
return new ThrowAction(throwable);
}
public static Action returnIterator(Collection<?> collection) {
return new ReturnIteratorAction(collection);
}
public static <T> Action returnIterator(T ... items) {
return new ReturnIteratorAction(items);
}
public static Action returnEnumeration(Collection<?> collection) {
return new ReturnEnumerationAction(collection);
}
public static <T> Action returnEnumeration(T ... items) {
return new ReturnEnumerationAction(items);
}
public static Action doAll(Action...actions) {
return new DoAllAction(actions);
}
public static Action onConsecutiveCalls(Action...actions) {
return new ActionSequence(actions);
}
/* Naming and ordering
*/
public void when(StatePredicate predicate) {
currentBuilder().addOrderingConstraint(new InStateOrderingConstraint(predicate));
}
public void then(State state) {
currentBuilder().addSideEffect(new ChangeStateSideEffect(state));
}
public void inSequence(Sequence sequence) {
currentBuilder().addInSequenceOrderingConstraint(sequence);
}
public void inSequences(Sequence... sequences) {
for (Sequence sequence : sequences) {
inSequence(sequence);
}
}
}
PK
<00><><EFBFBD>:=<3D>kcM)M)org/jmock/Mockery.javapackage org.jmock;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.hamcrest.Description;
import org.hamcrest.SelfDescribing;
import org.jmock.api.Expectation;
import org.jmock.api.ExpectationError;
import org.jmock.api.ExpectationErrorTranslator;
import org.jmock.api.Imposteriser;
import org.jmock.api.Invocation;
import org.jmock.api.Invokable;
import org.jmock.api.MockObjectNamingScheme;
import org.jmock.api.ThreadingPolicy;
import org.jmock.internal.CaptureControl;
import org.jmock.internal.ExpectationBuilder;
import org.jmock.internal.ExpectationCapture;
import org.jmock.internal.InvocationDispatcher;
import org.jmock.internal.InvocationDiverter;
import org.jmock.internal.InvocationToExpectationTranslator;
import org.jmock.internal.NamedSequence;
import org.jmock.internal.ObjectMethodExpectationBouncer;
import org.jmock.internal.ProxiedObjectIdentity;
import org.jmock.internal.ReturnDefaultValueAction;
import org.jmock.internal.SingleThreadedPolicy;
import org.jmock.lib.CamelCaseNamingScheme;
import org.jmock.lib.IdentityExpectationErrorTranslator;
import org.jmock.lib.JavaReflectionImposteriser;
import org.jmock.lib.concurrent.Synchroniser;
/**
* A Mockery represents the context, or neighbourhood, of the object(s) under test.
*
* The neighbouring objects in that context are mocked out. The test specifies the
* expected interactions between the object(s) under test and its neighbours and
* the Mockery checks those expectations while the test is running.
*
* @author npryce
* @author smgf
* @author named by Ivan Moore.
*/
public class Mockery implements SelfDescribing {
private Set<String> mockNames = new HashSet<String>();
private Imposteriser imposteriser = JavaReflectionImposteriser.INSTANCE;
private ExpectationErrorTranslator expectationErrorTranslator = IdentityExpectationErrorTranslator.INSTANCE;
private MockObjectNamingScheme namingScheme = CamelCaseNamingScheme.INSTANCE;
private ThreadingPolicy threadingPolicy = new SingleThreadedPolicy();
private ReturnDefaultValueAction defaultAction = new ReturnDefaultValueAction(imposteriser);
private InvocationDispatcher dispatcher = new InvocationDispatcher();
private Error firstError = null;
private List<Invocation> actualInvocations = new ArrayList<Invocation>();
/*
* Policies
*/
/**
* Sets the result returned for the given type when no return value has been explicitly
* specified in the expectation.
*
* @param type
* The type for which to return <var>result</var>.
* @param result
* The value to return when a method of return type <var>type</var>
* is invoked for which an explicit return value has has not been specified.
*/
public void setDefaultResultForType(Class<?> type, Object result) {
defaultAction.addResult(type, result);
}
/**
* Changes the imposteriser used to adapt mock objects to the mocked type.
*
* The default imposteriser allows a test to mock interfaces but not
* classes, so you'll have to plug a different imposteriser into the
* Mockery if you want to mock classes.
*/
public void setImposteriser(Imposteriser imposteriser) {
this.imposteriser = imposteriser;
this.defaultAction.setImposteriser(imposteriser);
}
/**
* Changes the naming scheme used to generate names for mock objects that
* have not been explicitly named in the test.
*
* The default naming scheme names mock objects by lower-casing the first
* letter of the class name, so a mock object of type BananaSplit will be
* called "bananaSplit" if it is not explicitly named in the test.
*/
public void setNamingScheme(MockObjectNamingScheme namingScheme) {
this.namingScheme = namingScheme;
}
/**
* Changes the expectation error translator used to translate expectation
* errors into errors that report test failures.
*
* By default, expectation errors are not translated and are thrown as
* errors of type {@link ExpectationError}. Plug in a new expectation error
* translator if you want your favourite test framework to report expectation
* failures using its own error type.
*/
public void setExpectationErrorTranslator(ExpectationErrorTranslator expectationErrorTranslator) {
this.expectationErrorTranslator = expectationErrorTranslator;
}
/**
* Changes the policy by which the Mockery copes with multiple threads.
*
* The default policy throws an exception if the Mockery is called from different
* threads.
*
* @see Synchroniser
*/
public void setThreadingPolicy(ThreadingPolicy threadingPolicy) {
this.threadingPolicy = threadingPolicy;
}
/*
* API
*/
/**
* Creates a mock object of type <var>typeToMock</var> and generates a name for it.
*/
public <T> T mock(Class<T> typeToMock) {
return mock(typeToMock, namingScheme.defaultNameFor(typeToMock));
}
/**
* Creates a mock object of type <var>typeToMock</var> with the given name.
*/
public <T> T mock(Class<T> typeToMock, String name) {
if (mockNames.contains(name)) {
throw new IllegalArgumentException("a mock with name " + name + " already exists");
}
MockObject mock = new MockObject(typeToMock, name);
mockNames.add(name);
Invokable invokable =
threadingPolicy.synchroniseAccessTo(
new ProxiedObjectIdentity(
new InvocationDiverter<CaptureControl>(
CaptureControl.class, mock, mock)));
return imposteriser.imposterise(invokable, typeToMock, CaptureControl.class);
}
/**
* Returns a new sequence that is used to constrain the order in which
* expectations can occur.
*
* @param name
* The name of the sequence.
* @return
* A new sequence with the given name.
*/
public Sequence sequence(String name) {
return new NamedSequence(name);
}
/**
* Returns a new state machine that is used to constrain the order in which
* expectations can occur.
*
* @param name
* The name of the state machine.
* @return
* A new state machine with the given name.
*/
public States states(String name) {
return dispatcher.newStateMachine(name);
}
/**
* Specifies the expected invocations that the object under test will perform upon
* objects in its context during the test.
*
* The builder is responsible for interpreting high-level, readable API calls to
* construct an expectation.
*
* This method can be called multiple times per test and the expectations defined in
* each block are combined as if they were defined in same order within a single block.
*/
public void checking(ExpectationBuilder expectations) {
expectations.buildExpectations(defaultAction, dispatcher);
}
/**
* Adds an expected invocation that the object under test will perform upon
* objects in its context during the test.
*
* This method allows a test to define an expectation explicitly, bypassing the
* high-level API, if desired.
*/
public void addExpectation(Expectation expectation) {
dispatcher.add(expectation);
}
/**
* Fails the test if there are any expectations that have not been met.
*/
public void assertIsSatisfied() {
if (firstError != null) {
throw firstError;
}
else if (!dispatcher.isSatisfied()) {
throw expectationErrorTranslator.translate(
new ExpectationError("not all expectations were satisfied", this));
}
}
public void describeTo(Description description) {
description.appendDescriptionOf(dispatcher);
describeHistory(description);
}
private void describeMismatch(Invocation invocation, Description description) {
dispatcher.describeMismatch(invocation, description);
describeHistory(description);
}
private void describeHistory(Description description) {
description.appendText("\nwhat happened before this:");
if (actualInvocations.isEmpty()) {
description.appendText(" nothing!");
}
else {
description.appendList("\n ", "\n ", "\n", actualInvocations);
}
}
private Object dispatch(Invocation invocation) throws Throwable {
if (firstError != null) {
throw firstError;
}
try {
Object result = dispatcher.dispatch(invocation);
actualInvocations.add(invocation);
return result;
}
catch (ExpectationError e) {
firstError = expectationErrorTranslator.translate(mismatchDescribing(e));
firstError.setStackTrace(e.getStackTrace());
throw firstError;
}
catch (Throwable t) {
actualInvocations.add(invocation);
throw t;
}
}
private ExpectationError mismatchDescribing(final ExpectationError e) {
ExpectationError filledIn = new ExpectationError(e.getMessage(), new SelfDescribing() {
public void describeTo(Description description) {
describeMismatch(e.invocation, description);
}
}, e.invocation);
filledIn.setStackTrace(e.getStackTrace());
return filledIn;
}
private class MockObject implements Invokable, CaptureControl {
private Class<?> mockedType;
private String name;
public MockObject(Class<?> mockedType, String name) {
this.name = name;
this.mockedType = mockedType;
}
@Override
public String toString() {
return name;
}
public Object invoke(Invocation invocation) throws Throwable {
return dispatch(invocation);
}
public Object captureExpectationTo(ExpectationCapture capture) {
return imposteriser.imposterise(
new ObjectMethodExpectationBouncer(new InvocationToExpectationTranslator(capture, defaultAction)),
mockedType);
}
}
}
PK
JUz6<7A><36><EFBFBD><EFBFBD>::org/jmock/Sequence.javapackage org.jmock;
import org.jmock.internal.InvocationExpectation;
/**
* A sequence of expectations; invocations can be constrained to occur in a strict
* order defined by a sequence.
*
* @author nat
*/
public interface Sequence {
void constrainAsNextInSequence(InvocationExpectation expectation);
}
PK
<00>d/8<>^<5E><>org/jmock/States.javapackage org.jmock;
import org.hamcrest.SelfDescribing;
import org.jmock.syntax.StatesClause;
/**
* A state machine that is used to constrain the order of invocations.
*
* An invocation can be constrained to occur when a state is, or is not, active.
*
* @author nat
*/
public interface States extends SelfDescribing, StatesClause {
/**
* Put the state machine into state <var>initialState</var>.
*
* @param initialState
* The initial state of the state machine.
* @return
* Itself.
*/
States startsAs(String initialState);
/**
* Put the state machine into state <var>nextState</var>.
*
* @param nextState
* The next state of the state machine.
*/
void become(String nextState);
}
PK
<00>a=6U7<55><37>  org/jmock/api/Action.java/* Copyright (c) 2000-2004 jMock.org
*/
package org.jmock.api;
import org.hamcrest.SelfDescribing;
/**
* An object that fakes the behaviour of an {@link org.jmock.internal.InvocationExpectation}.
*/
public interface Action extends SelfDescribing, Invokable {
}
PK
I<>K9D<04>.jjorg/jmock/api/Expectation.javapackage org.jmock.api;
import org.hamcrest.Description;
import org.hamcrest.SelfDescribing;
/**
* An object that matches, checks and fakes an {@link org.jmock.api.Invocation}
*
* @author npryce
* @author smgf
*/
public interface Expectation extends SelfDescribing {
/**
* Have enough {@link Invocation}s expected by this Expectation occurred?
*
* @return
* <code>true</code> if the expectation has received enough
* of its expected invocations, <code>false</code> otherwise.
*/
boolean isSatisfied();
/**
* Can more {@link Invocation}s expected by this Expectation still occur?
*
* @return
* <code>true</code> if invocations expected by this expectation can still
* occur, <code>false</code> otherwise.
*/
boolean allowsMoreInvocations();
/**
* Can the Expectation be invoked with <var>invocation</var>?
*
* @param invocation
*
* @return
* <code>true</code> if the expectation can be invoked with
* <var>invocation</var>, <code>false</code> otherwise.
*/
boolean matches(Invocation invocation);
void describeMismatch(Invocation invocation, Description description);
/**
* Invokes the expectation: records that the invocation has
* occurred and fakes some behaviour in response.
*
* @param invocation
* The invocation to record and fake.
* @return
* A result that is eventually returned from the method call
* that caused the invocation.
*
* @throws Throwable
* An exception that is eventually thrown from the method call
* that caused the invocation.
* @throws IllegalStateException
* The expectation has been invoked with a method that it doesn't
* match or the faked behaviour has been set up incorrectly.
* For example, IllegalStateException is thrown when trying to return
* a value or throw a checked exception that is incompatible with the
* return type of the method being mocked
*/
Object invoke(Invocation invocation) throws Throwable;
}
PK
<00>C<EFBFBD>6v_<76>..#org/jmock/api/ExpectationError.javapackage org.jmock.api;
import org.hamcrest.Description;
import org.hamcrest.SelfDescribing;
import org.hamcrest.StringDescription;
/**
* An error thrown when an expectation is violated during a test.
*
* @author npryce
*/
public class ExpectationError extends Error implements SelfDescribing {
public final SelfDescribing expectations;
public final Invocation invocation;
public ExpectationError(String message, SelfDescribing expectations, Invocation invocation) {
super(message);
this.invocation = invocation;
this.expectations = expectations;
}
public ExpectationError(String message, Invocation invocation) {
this(message, null, invocation);
}
public ExpectationError(String message, SelfDescribing expectations) {
this(message, expectations, null);
}
@Override
public String toString() {
return StringDescription.toString(this);
}
public void describeTo(Description description) {
description.appendText(getMessage());
if (invocation != null) {
description.appendText(": ");
invocation.describeTo(description);
}
if (expectations != null) {
description.appendText("\n");
expectations.describeTo(description);
}
}
}
PK
<00><>x5?<3F>cee-org/jmock/api/ExpectationErrorTranslator.javapackage org.jmock.api;
/**
* Translates expectation errors into error type used by a specific
* testing framework.
*
* @author npryce
*/
public interface ExpectationErrorTranslator {
/**
* Translates the given {@link ExpectationError} into an error
* type compatible with another testing framework.
*
* @param e
* The {@link ExpectationError} to translate.
*
* @return
* An error that is compatible with another testing framework
* and contains the same message and stack trace as <var>e</var>.
*/
Error translate(ExpectationError e);
}
PK
<00><>96߳<><00>org/jmock/api/Imposteriser.javapackage org.jmock.api;
/**
* An object that can creates a proxy of the given type to capture
* {@link org.jmock.api.Invocation}s and pass them to an
* {@link org.jmock.api.Invokable} object for mocking or stubbing.
*
* @author npryce
*/
public interface Imposteriser {
/**
* Reports if the Imposteriser is able to imposterise a given type.
*
* @param type
* The type in question.
* @return
* True if this imposteriser can imposterise <var>type</var>, false otherwise.
*/
boolean canImposterise(Class<?> type);
/**
* Creates an imposter for a given type that forwards {@link Invocation}s to an
* {@link Invokable} object.
*
* @param <T>
* The static type of the imposter that is created.
* @param mockObject
* The object that is to receive invocations forwarded from the imposter.
* @param mockedType
* The class representing the static type of the imposter.
* @param ancilliaryTypes
* Other types for the imposter. It must be possible to dynamically cast the imposter to these types.
* These types must all be interfaces because Java only allows single inheritance of classes.
* @return
* A new imposter. The imposter must implement the mockedType and all the ancialliaryTypes.
*/
<T> T imposterise(Invokable mockObject, Class<T> mockedType, Class<?>... ancilliaryTypes);
}
PK
SAh7<68><37><EFBFBD><EFBFBD>EEorg/jmock/api/Invocation.java/* Copyright (c) 2000-2004 jMock.org
*/
package org.jmock.api;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import org.hamcrest.Description;
import org.hamcrest.SelfDescribing;
import org.hamcrest.StringDescription;
/**
* The static details about a method and the run-time details of its invocation.
*
* @since 1.0
*/
public class Invocation implements SelfDescribing {
public static final Object[] NO_PARAMETERS = null;
private final Object invokedObject;
private final Method invokedMethod;
private final Object[] parameterValues;
// A kludge but there doesn't seem to be a way to find this out through the reflection API.
private static final Map<Class<?>, Class<?>> BOX_TYPES = new HashMap<Class<?>, Class<?>>() {{
put(boolean.class, Boolean.class);
put(byte.class, Byte.class);
put(char.class, Character.class);
put(short.class, Short.class);
put(int.class, Integer.class);
put(long.class, Long.class);
put(float.class, Float.class);
put(double.class, Double.class);
}};
public Invocation(Object invoked, Method method, Object... parameterValues) {
this.invokedObject = invoked;
this.invokedMethod = method;
this.parameterValues = (parameterValues == NO_PARAMETERS)
? new Object[0]
: parameterValues.clone();
}
@Override
public String toString() {
return super.toString() + "[" + StringDescription.toString(this) + "]";
}
@Override
public boolean equals(Object other) {
return (other instanceof Invocation) && this.equals((Invocation)other);
}
public boolean equals(Invocation other) {
return other != null && invokedObject == other.invokedObject
&& invokedMethod.equals(other.invokedMethod)
&& Arrays.equals(parameterValues, other.parameterValues);
}
@Override
public int hashCode() {
return invokedObject.hashCode()
^ invokedMethod.hashCode()
^ Arrays.hashCode(parameterValues);
}
public void describeTo(Description description) {
description.appendText(invokedObject.toString());
description.appendText(".");
description.appendText(invokedMethod.getName());
description.appendValueList("(", ", ", ")", parameterValues);
}
public Object getInvokedObject() {
return invokedObject;
}
public Method getInvokedMethod() {
return invokedMethod;
}
public int getParameterCount() {
return parameterValues.length;
}
public Object getParameter(int i) {
return parameterValues[i];
}
public Object[] getParametersAsArray() {
return parameterValues.clone();
}
public Object applyTo(Object target) throws Throwable {
try {
return invokedMethod.invoke(target, getParametersAsArray());
}
catch (InvocationTargetException ex) {
throw ex.getTargetException();
}
}
public void checkReturnTypeCompatibility(final Object value) {
Class<?> returnType = invokedMethod.getReturnType();
if (returnType == void.class) {
failIfReturnTypeIsNotNull(value);
}
else if (value == null) {
failIfReturnTypeIsPrimitive();
}
else {
Class<?> valueType = value.getClass();
if (!isCompatible(returnType, valueType)) {
reportTypeError(returnType, valueType);
}
}
}
private boolean isCompatible(Class<?> returnType, Class<?> valueType) {
if (returnType.isPrimitive()) {
// The reflection API doesn't reflect Java's auto-boxing.
return isBoxedType(returnType, valueType);
}
return returnType.isAssignableFrom(valueType);
}
private boolean isBoxedType(Class<?> primitiveType, Class<?> referenceType) {
return BOX_TYPES.get(primitiveType) == referenceType;
}
private void failIfReturnTypeIsNotNull(final Object result) {
if (result != null) {
throw new IllegalStateException("tried to return a value from a void method: " + result);
}
}
private void failIfReturnTypeIsPrimitive() {
Class<?> returnType = invokedMethod.getReturnType();
if (returnType.isPrimitive()) {
throw new IllegalStateException(
"tried to return null value from method returning " + returnType.getName());
}
}
private void reportTypeError(Class<?> returnType, Class<?> valueType) {
throw new IllegalStateException(
"tried to return a " + valueType.getName() +
" from a method that can only return a " + returnType.getName());
}
}
PK
<00><>x50q<30><71><00>org/jmock/api/Invokable.javapackage org.jmock.api;
/**
* An object that can receive an {@link org.jmock.api.Invocation}.
*
* @author npryce
*/
public interface Invokable {
/**
* Performs an action in response to an invocation.
*
* @param invocation
* The invocation to perform.
* @return
* The result of the invocation, if not throwing an exception.
* Must return <code>null</code> if the invoked method has a void return type.
* @throws Throwable
* An exception to be thrown to the caller, if not returning a value. Any checked exception
* thrown must be in the <code>throws</code> list of the invoked method.
*/
Object invoke(Invocation invocation) throws Throwable;
}
PK
<00><>x5<78><57><00>)org/jmock/api/MockObjectNamingScheme.javapackage org.jmock.api;
/**
* Creates names for mock objects that have not explicitly been
* given a name.
*
* @author npryce
*/
public interface MockObjectNamingScheme {
/**
* Derive a name for a mock object from the name of the given type.
*
* @param typeToMock
* The type being mocked.
* @return
* The default name for a mock object of the given type.
*/
String defaultNameFor(Class<?> typeToMock);
}
PK
<00><03>:<3A>EGtvv"org/jmock/api/ThreadingPolicy.javapackage org.jmock.api;
public interface ThreadingPolicy {
Invokable synchroniseAccessTo(Invokable mockObject);
}
PK
a<><61>;<3B><>b<EFBFBD>org/jmock/auto/Auto.javapackage org.jmock.auto;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
@Retention(RUNTIME)
@Target(FIELD)
public @interface Auto {
}
PK
a<><61>;>/<2F><>org/jmock/auto/Mock.javapackage org.jmock.auto;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
@Retention(RUNTIME)
@Target(FIELD)
public @interface Mock {
}
PK
Z!< <0B><EFBFBD>W W 'org/jmock/auto/internal/Mockomatic.javapackage org.jmock.auto.internal;
import java.lang.reflect.Field;
import java.util.List;
import org.jmock.Mockery;
import org.jmock.Sequence;
import org.jmock.States;
import org.jmock.auto.Auto;
import org.jmock.auto.Mock;
import org.jmock.internal.AllDeclaredFields;
public class Mockomatic {
private final Mockery mockery;
public Mockomatic(Mockery mockery) {
this.mockery = mockery;
}
public void fillIn(Object object) {
fillIn(object, AllDeclaredFields.in(object.getClass()));
}
public void fillIn(Object object, final List<Field> knownFields) {
for (Field field : knownFields) {
if (field.isAnnotationPresent(Mock.class)) {
autoMock(object, field);
}
else if (field.isAnnotationPresent(Auto.class)) {
autoInstantiate(object, field);
}
}
}
private void autoMock(Object object, Field field) {
setAutoField(field, object,
mockery.mock(field.getType(), field.getName()),
"auto-mock field " + field.getName());
}
private void autoInstantiate(Object object, Field field) {
final Class<?> type = field.getType();
if (type == States.class) {
autoInstantiateStates(field, object);
}
else if (type == Sequence.class) {
autoInstantiateSequence(field, object);
}
else {
throw new IllegalStateException("cannot auto-instantiate field of type " + type.getName());
}
}
private void autoInstantiateStates(Field field, Object object) {
setAutoField(field, object,
mockery.states(field.getName()),
"auto-instantiate States field " + field.getName());
}
private void autoInstantiateSequence(Field field, Object object) {
setAutoField(field, object,
mockery.sequence(field.getName()),
"auto-instantiate Sequence field " + field.getName());
}
private void setAutoField(Field field, Object object, Object value, String description) {
try {
field.setAccessible(true);
field.set(object, value);
}
catch (IllegalAccessException e) {
throw new IllegalStateException("cannot " + description, e);
}
}
}
PK
n<><6E><<3C>H<EFBFBD><48><EFBFBD><00>)org/jmock/internal/AllDeclaredFields.javapackage org.jmock.internal;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
import static java.util.Arrays.asList;
public class AllDeclaredFields {
public static List<Field> in(Class<?> clazz) {
final ArrayList<Field> fields = new ArrayList<Field>();
for (Class<?> c = clazz; c != Object.class; c = c.getSuperclass()) {
fields.addAll(asList(c.getDeclaredFields()));
}
return fields;
}
}
PK
O<>8$<24>`w<><00>&org/jmock/internal/CaptureControl.javapackage org.jmock.internal;
public interface CaptureControl {
Object captureExpectationTo(ExpectationCapture capture);
}
PK
G<><47>7P<37><17>~ ~ #org/jmock/internal/Cardinality.javapackage org.jmock.internal;
import org.hamcrest.Description;
import org.hamcrest.SelfDescribing;
/**
* The acceptable range of times an expectation may be invoked.
*
* @author smgf
* @author nat
*/
public class Cardinality implements SelfDescribing {
public static final Cardinality ALLOWING = atLeast(0);
private final int required;
private final int maximum;
public Cardinality(final int required, final int maximum) {
this.required = required;
this.maximum = maximum;
}
public static Cardinality exactly(int count) {
return between(count, count);
}
public static Cardinality atLeast(int required) {
return between(required, Integer.MAX_VALUE);
}
public static Cardinality between(int required, int maximum) {
return new Cardinality(required, maximum);
}
public static Cardinality atMost(int maximum) {
return between(0, maximum);
}
public boolean isSatisfied(int invocationsSoFar) {
return required <= invocationsSoFar;
}
public boolean allowsMoreInvocations(int invocationCount) {
return invocationCount < maximum;
}
public void describeTo(Description description) {
if (required == 0 && maximum == Integer.MAX_VALUE) {
description.appendText("allowed");
}
else {
description.appendText("expected ");
if (required == 0 && maximum == 0) {
description.appendText("never");
}
else if (required == 1 && maximum == 1) {
description.appendText("once");
}
else if (required == maximum) {
description.appendText("exactly ");
description.appendText(Formatting.times(required));
}
else if (maximum == Integer.MAX_VALUE) {
description.appendText("at least ");
description.appendText(Formatting.times(required));
}
else if (required == 0) {
description.appendText("at most ");
description.appendText(Formatting.times(maximum));
}
else {
description.appendText(Integer.toString(required));
description.appendText(" to ");
description.appendText(Formatting.times(maximum));
}
}
}
}
PK
tHb6)J:_<><00>-org/jmock/internal/ChangeStateSideEffect.javapackage org.jmock.internal;
import org.hamcrest.Description;
public class ChangeStateSideEffect implements SideEffect {
private final State state;
public ChangeStateSideEffect(State state) {
this.state = state;
}
public void perform() {
state.activate();
}
public void describeTo(Description description) {
description.appendText("then ");
state.describeTo(description);
}
}
PK
tHb6<62><17>T<EFBFBD><00>*org/jmock/internal/ExpectationBuilder.javapackage org.jmock.internal;
import org.jmock.api.Action;
public interface ExpectationBuilder {
void buildExpectations(Action defaultAction, ExpectationCollector collector);
}
PK
O<>8<EFBFBD><38>)#<23><00>*org/jmock/internal/ExpectationCapture.javapackage org.jmock.internal;
import org.jmock.api.Invocation;
public interface ExpectationCapture {
void createExpectationFrom(Invocation invocation);
}
PK
<00>;6
ծ[<5B><00>,org/jmock/internal/ExpectationCollector.javapackage org.jmock.internal;
import org.jmock.api.Expectation;
public interface ExpectationCollector {
void add(Expectation expectation);
}
PK
-[<5B>8<EFBFBD><<3C><03><00>)org/jmock/internal/FakeObjectMethods.javapackage org.jmock.internal;
import java.lang.reflect.Method;
import java.util.Arrays;
import org.jmock.api.Invocation;
import org.jmock.api.Invokable;
public abstract class FakeObjectMethods implements Invokable {
private final Invokable next;
public FakeObjectMethods(Invokable next) {
this.next = next;
}
@Override
public String toString() {
return next.toString();
}
public Object invoke(Invocation invocation) throws Throwable {
Method method = invocation.getInvokedMethod();
if (isMethod(method, int.class, "hashCode")) {
return fakeHashCode(invocation.getInvokedObject());
}
else if (isMethod(method, String.class, "toString")) {
return fakeToString(invocation.getInvokedObject());
}
else if (isMethod(method, boolean.class, "equals", Object.class)) {
return fakeEquals(invocation.getInvokedObject(), invocation.getParameter(0));
}
else if (isMethod(method, void.class, "finalize")) {
fakeFinalize(invocation.getInvokedObject());
return null;
}
else {
return next.invoke(invocation);
}
}
protected abstract int fakeHashCode(Object invokedObject);
protected abstract String fakeToString(Object invokedObject);
protected abstract boolean fakeEquals(Object invokedObject, Object other);
protected abstract void fakeFinalize(Object invokedObject);
private boolean isMethod(Method method, Class<?> returnType, String name, Class<?>... parameterTypes) {
return method.getReturnType().equals(returnType)
&& method.getName().equals(name)
&& Arrays.equals(method.getParameterTypes(), parameterTypes);
}
}
PK
G<><47>7<EFBFBD><37>gY<67><00>"org/jmock/internal/Formatting.javapackage org.jmock.internal;
public class Formatting {
public static String times(int i) {
return i + " " + (i == 1 ? "time" : "times");
}
}
PK
N~d6%<25><13>&&1org/jmock/internal/InStateOrderingConstraint.javapackage org.jmock.internal;
import org.hamcrest.Description;
public class InStateOrderingConstraint implements OrderingConstraint {
private final StatePredicate statePredicate;
public InStateOrderingConstraint(StatePredicate statePredicate) {
this.statePredicate = statePredicate;
}
public boolean allowsInvocationNow() {
return statePredicate.isActive();
}
public void describeTo(Description description) {
description.appendText("when ");
statePredicate.describeTo(description);
}
}
PK
I<>K9<4B><39><EFBFBD>ы <00> ,org/jmock/internal/InvocationDispatcher.javapackage org.jmock.internal;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.hamcrest.Description;
import org.hamcrest.SelfDescribing;
import org.jmock.api.Expectation;
import org.jmock.api.ExpectationError;
import org.jmock.api.Invocation;
public class InvocationDispatcher implements ExpectationCollector, SelfDescribing {
private List<Expectation> expectations = new ArrayList<Expectation>();
private List<StateMachine> stateMachines = new ArrayList<StateMachine>();
public StateMachine newStateMachine(String name) {
StateMachine stateMachine = new StateMachine(name);
stateMachines.add(stateMachine);
return stateMachine;
}
public void add(Expectation expectation) {
expectations.add(expectation);
}
public void describeTo(Description description) {
describe(description, expectations);
}
public void describeMismatch(Invocation invocation, Description description) {
describe(description, describedWith(expectations, invocation));
}
private Iterable<SelfDescribing> describedWith(List<Expectation> expectations, final Invocation invocation) {
final Iterator<Expectation> iterator = expectations.iterator();
return new Iterable<SelfDescribing>() {
public Iterator<SelfDescribing> iterator() {
return new Iterator<SelfDescribing>() {
public boolean hasNext() { return iterator.hasNext(); }
public SelfDescribing next() {
return new SelfDescribing() {
public void describeTo(Description description) {
iterator.next().describeMismatch(invocation, description);
}
};
}
public void remove() { iterator.remove(); }
};
};
};
}
private void describe(Description description, Iterable<? extends SelfDescribing> selfDescribingExpectations) {
if (expectations.isEmpty()) {
description.appendText("no expectations specified: did you...\n"+
" - forget to start an expectation with a cardinality clause?\n" +
" - call a mocked method to specify the parameter of an expectation?");
}
else {
description.appendList("expectations:\n ", "\n ", "", selfDescribingExpectations);
if (!stateMachines.isEmpty()) {
description.appendList("\nstates:\n ", "\n ", "", stateMachines);
}
}
}
public boolean isSatisfied() {
for (Expectation expectation : expectations) {
if (! expectation.isSatisfied()) {
return false;
}
}
return true;
}
public Object dispatch(Invocation invocation) throws Throwable {
for (Expectation expectation : expectations) {
if (expectation.matches(invocation)) {
return expectation.invoke(invocation);
}
}
throw new ExpectationError("unexpected invocation", invocation);
}
}
PK
<00><>x5*Q0<51>66*org/jmock/internal/InvocationDiverter.javapackage org.jmock.internal;
import org.jmock.api.Invocation;
import org.jmock.api.Invokable;
public class InvocationDiverter<T> implements Invokable {
private final Class<T> declaringType;
private final T target;
private final Invokable next;
public InvocationDiverter(Class<T> declaringType, T target, Invokable next) {
this.declaringType = declaringType;
this.target = target;
this.next = next;
}
@Override
public String toString() {
return next.toString();
}
public Object invoke(Invocation invocation) throws Throwable {
if (invocation.getInvokedMethod().getDeclaringClass() == declaringType) {
return invocation.applyTo(target);
}
else {
return next.invoke(invocation);
}
}
}
PK
<02><>:8:<3A><><EFBFBD><00>-org/jmock/internal/InvocationExpectation.javapackage org.jmock.internal;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import org.hamcrest.Description;
import org.hamcrest.Matcher;
import org.hamcrest.core.IsAnything;
import org.jmock.api.Action;
import org.jmock.api.Expectation;
import org.jmock.api.Invocation;
import org.jmock.internal.matcher.MethodMatcher;
import org.jmock.lib.action.VoidAction;
/**
* An expectation of zero or more matching invocations.
*
* @author npryce
* @author smgf
*/
public class InvocationExpectation implements Expectation {
private static ParametersMatcher ANY_PARAMETERS = new AnyParametersMatcher();
private Cardinality cardinality = Cardinality.ALLOWING;
private Matcher<?> objectMatcher = IsAnything.anything();
private Matcher<? super Method> methodMatcher = IsAnything.anything("<any method>");
private boolean methodIsKnownToBeVoid = false;
private ParametersMatcher parametersMatcher = ANY_PARAMETERS;
private Action action = new VoidAction();
private boolean actionIsDefault = true;
private List<OrderingConstraint> orderingConstraints = new ArrayList<OrderingConstraint>();
private List<SideEffect> sideEffects = new ArrayList<SideEffect>();
private int invocationCount = 0;
public void setCardinality(Cardinality cardinality) {
this.cardinality = cardinality;
}
public void setObjectMatcher(Matcher<?> objectMatcher) {
this.objectMatcher = objectMatcher;
}
public void setMethod(Method method) {
this.methodMatcher = new MethodMatcher(method);
this.methodIsKnownToBeVoid = method.getReturnType() == void.class;
}
public void setMethodMatcher(Matcher<? super Method> matcher) {
this.methodMatcher = matcher;
this.methodIsKnownToBeVoid = false;
}
public void setParametersMatcher(ParametersMatcher parametersMatcher) {
this.parametersMatcher = parametersMatcher;
}
public void addOrderingConstraint(OrderingConstraint orderingConstraint) {
orderingConstraints.add(orderingConstraint);
}
public void addSideEffect(SideEffect sideEffect) {
sideEffects.add(sideEffect);
}
public void setAction(Action action) {
this.action = action;
this.actionIsDefault = false;
}
public void setDefaultAction(Action action) {
this.action = action;
this.actionIsDefault = true;
}
public void describeTo(Description description) {
if (! isSatisfied()) {
description.appendText("! ");
}
describeMethod(description);
parametersMatcher.describeTo(description);
describeSideEffects(description);
}
public void describeMismatch(Invocation invocation, Description description) {
describeMethod(description);
final Object[] parameters = invocation.getParametersAsArray();
parametersMatcher.describeTo(description);
if (parametersMatcher.isCompatibleWith(parameters)) {
parametersMatcher.describeMismatch(parameters, description);
}
describeSideEffects(description);
}
private void describeMethod(Description description) {
cardinality.describeTo(description);
description.appendText(", ");
if (invocationCount == 0) {
description.appendText("never invoked");
}
else {
description.appendText("already invoked ");
description.appendText(Formatting.times(invocationCount));
}
description.appendText(": ");
objectMatcher.describeTo(description);
description.appendText(".");
methodMatcher.describeTo(description);
}
private void describeSideEffects(Description description) {
for (OrderingConstraint orderingConstraint : orderingConstraints) {
description.appendText("; ");
orderingConstraint.describeTo(description);
}
if (!shouldSuppressActionDescription()) {
description.appendText("; ");
action.describeTo(description);
}
for (SideEffect sideEffect : sideEffects) {
description.appendText("; ");
sideEffect.describeTo(description);
}
}
private boolean shouldSuppressActionDescription() {
return methodIsKnownToBeVoid && actionIsDefault;
}
public boolean isSatisfied() {
return cardinality.isSatisfied(invocationCount);
}
public boolean allowsMoreInvocations() {
return cardinality.allowsMoreInvocations(invocationCount);
}
public boolean matches(Invocation invocation) {
return allowsMoreInvocations()
&& objectMatcher.matches(invocation.getInvokedObject())
&& methodMatcher.matches(invocation.getInvokedMethod())
&& parametersMatcher.matches(invocation.getParametersAsArray())
&& isInCorrectOrder();
}
private boolean isInCorrectOrder() {
for (OrderingConstraint constraint : orderingConstraints) {
if (!constraint.allowsInvocationNow()) return false;
}
return true;
}
public Object invoke(Invocation invocation) throws Throwable {
invocationCount++;
performSideEffects();
final Object result = action.invoke(invocation);
invocation.checkReturnTypeCompatibility(result);
return result;
}
private void performSideEffects() {
for (SideEffect sideEffect : sideEffects) {
sideEffect.perform();
}
}
private static class AnyParametersMatcher extends IsAnything<Object[]> implements ParametersMatcher {
public AnyParametersMatcher() {
super("(<any parameters>)");
}
public boolean isCompatibleWith(Object[] parameters) {
return true;
}
};
}
PK
I<>K9
<19>(<28><00>4org/jmock/internal/InvocationExpectationBuilder.javapackage org.jmock.internal;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.hamcrest.Matcher;
import org.jmock.Sequence;
import org.jmock.api.Action;
import org.jmock.api.Expectation;
import org.jmock.api.Invocation;
import org.jmock.internal.matcher.MethodNameMatcher;
import org.jmock.internal.matcher.MockObjectMatcher;
import org.jmock.internal.matcher.AllParametersMatcher;
import org.jmock.syntax.MethodClause;
import org.jmock.syntax.ParametersClause;
import org.jmock.syntax.ReceiverClause;
public class InvocationExpectationBuilder
implements ExpectationCapture,
ReceiverClause, MethodClause, ParametersClause
{
private final InvocationExpectation expectation = new InvocationExpectation();
private boolean isFullySpecified = false;
private boolean needsDefaultAction = true;
private List<Matcher<?>> capturedParameterMatchers = new ArrayList<Matcher<?>>();
public Expectation toExpectation(Action defaultAction) {
if (needsDefaultAction) {
expectation.setDefaultAction(defaultAction);
}
return expectation;
}
public void setCardinality(Cardinality cardinality) {
expectation.setCardinality(cardinality);
}
public void addParameterMatcher(Matcher<?> matcher) {
capturedParameterMatchers.add(matcher);
}
public void addOrderingConstraint(OrderingConstraint constraint) {
expectation.addOrderingConstraint(constraint);
}
public void addInSequenceOrderingConstraint(Sequence sequence) {
sequence.constrainAsNextInSequence(expectation);
}
public void setAction(Action action) {
expectation.setAction(action);
needsDefaultAction = false;
}
public void addSideEffect(SideEffect sideEffect) {
expectation.addSideEffect(sideEffect);
}
private <T> T captureExpectedObject(T mockObject) {
if (!(mockObject instanceof CaptureControl)) {
throw new IllegalArgumentException("can only set expectations on mock objects");
}
expectation.setObjectMatcher(new MockObjectMatcher(mockObject));
isFullySpecified = true;
Object capturingImposter = ((CaptureControl)mockObject).captureExpectationTo(this);
return asMockedType(mockObject, capturingImposter);
}
// Damn you Java generics! Damn you to HELL!
@SuppressWarnings("unchecked")
private <T> T asMockedType(@SuppressWarnings("unused") T mockObject,
Object capturingImposter)
{
return (T) capturingImposter;
}
public void createExpectationFrom(Invocation invocation) {
expectation.setMethod(invocation.getInvokedMethod());
if (capturedParameterMatchers.isEmpty()) {
expectation.setParametersMatcher(new AllParametersMatcher(invocation.getParametersAsArray()));
}
else {
checkParameterMatcherCount(invocation);
expectation.setParametersMatcher(new AllParametersMatcher(capturedParameterMatchers));
}
}
private void checkParameterMatcherCount(Invocation invocation) {
if (capturedParameterMatchers.size() != invocation.getParameterCount()) {
throw new IllegalArgumentException("not all parameters were given explicit matchers: either all parameters must be specified by matchers or all must be specified by values, you cannot mix matchers and values");
}
}
public void checkWasFullySpecified() {
if (!isFullySpecified) {
throw new IllegalStateException("expectation was not fully specified");
}
}
/*
* Syntactic sugar
*/
public <T> T of(T mockObject) {
return captureExpectedObject(mockObject);
}
public MethodClause of(Matcher<?> objectMatcher) {
expectation.setObjectMatcher(objectMatcher);
isFullySpecified = true;
return this;
}
public ParametersClause method(Matcher<Method> methodMatcher) {
expectation.setMethodMatcher(methodMatcher);
return this;
}
public ParametersClause method(String nameRegex) {
return method(new MethodNameMatcher(nameRegex));
}
public void with(Matcher<?>... parameterMatchers) {
expectation.setParametersMatcher(new AllParametersMatcher(Arrays.asList(parameterMatchers)));
}
public void withNoArguments() {
with();
}
}
PK
O<>8<EFBFBD>U4<55><34><00>9org/jmock/internal/InvocationToExpectationTranslator.javapackage org.jmock.internal;
import org.jmock.api.Action;
import org.jmock.api.Invocation;
import org.jmock.api.Invokable;
public class InvocationToExpectationTranslator implements Invokable {
private final ExpectationCapture capture;
private Action defaultAction;
public InvocationToExpectationTranslator(ExpectationCapture capture,
Action defaultAction)
{
this.capture = capture;
this.defaultAction = defaultAction;
}
public Object invoke(Invocation invocation) throws Throwable {
capture.createExpectationFrom(invocation);
return defaultAction.invoke(invocation);
}
}
PK
a<><61>;<3B><>/<2F><><00>%org/jmock/internal/NamedSequence.javapackage org.jmock.internal;
import java.util.ArrayList;
import java.util.List;
import org.hamcrest.Description;
import org.jmock.Sequence;
import org.jmock.api.Expectation;
/**
* A sequence of expectations.
*
* Invocations can be constrained to occur in strict order defined by a sequence.
*
* @author nat
*/
public class NamedSequence implements Sequence {
private final String name;
private List<Expectation> elements = new ArrayList<Expectation>();
public NamedSequence(String name) {
this.name = name;
}
@Override
public String toString() {
return name;
}
public void constrainAsNextInSequence(InvocationExpectation expectation) {
int index = elements.size();
elements.add(expectation);
expectation.addOrderingConstraint(new InSequenceOrderingConstraint(this, index));
}
private boolean isSatisfiedToIndex(int index) {
for (int i = 0; i < index; i++) {
if (!elements.get(i).isSatisfied()) return false;
}
return true;
}
private static class InSequenceOrderingConstraint implements OrderingConstraint {
private final NamedSequence sequence;
private final int index;
public InSequenceOrderingConstraint(NamedSequence sequence, int index) {
this.sequence = sequence;
this.index = index;
}
public boolean allowsInvocationNow() {
return sequence.isSatisfiedToIndex(index);
}
public void describeTo(Description description) {
description.appendText("in sequence ").appendText(sequence.name);
}
}
}
PK
-[<5B>8:3<><33><EFBFBD><00>6org/jmock/internal/ObjectMethodExpectationBouncer.javapackage org.jmock.internal;
import org.jmock.api.Invokable;
public class ObjectMethodExpectationBouncer extends FakeObjectMethods {
public ObjectMethodExpectationBouncer(Invokable next) {
super(next);
}
@Override
protected boolean fakeEquals(Object invokedObject, Object other) {
throw cannotDefineExpectation();
}
@Override
protected void fakeFinalize(Object invokedObject) {
throw cannotDefineExpectation();
}
@Override
protected int fakeHashCode(Object invokedObject) {
throw cannotDefineExpectation();
}
@Override
protected String fakeToString(Object invokedObject) {
throw cannotDefineExpectation();
}
private IllegalArgumentException cannotDefineExpectation() {
return new IllegalArgumentException("you cannot define expectations for methods defined by the Object class");
}
}
PK
<00>a=6W<36><57><EFBFBD><EFBFBD><00>*org/jmock/internal/OrderingConstraint.javapackage org.jmock.internal;
import org.hamcrest.SelfDescribing;
public interface OrderingConstraint extends SelfDescribing {
boolean allowsInvocationNow();
}
PK
I<>K9s<39>DMtt)org/jmock/internal/ParametersMatcher.javapackage org.jmock.internal;
import org.hamcrest.Matcher;
public interface ParametersMatcher extends Matcher<Object[]> {
/**
* Is this matcher likely to be relevant to the given parameters?
* @param parameters The parameters to be matched
* @return true iff the parameters may be relevant.
*/
boolean isCompatibleWith(Object[] parameters);
}
PK
-[<5B>8Bq˔<71><00>-org/jmock/internal/ProxiedObjectIdentity.javapackage org.jmock.internal;
import org.jmock.api.Invokable;
public class ProxiedObjectIdentity extends FakeObjectMethods {
public ProxiedObjectIdentity(Invokable next) {
super(next);
}
@Override
protected void fakeFinalize(Object invokedObject) {
}
@Override
protected boolean fakeEquals(Object invokedObject, Object other) {
return other == invokedObject;
}
@Override
protected String fakeToString(Object invokedObject) {
return toString();
}
@Override
protected int fakeHashCode(Object invokedObject) {
return System.identityHashCode(invokedObject);
}
}
PK
ce<63>6LeF<65>t t 0org/jmock/internal/ReturnDefaultValueAction.java/* Copyright (c) 2000-2004 jMock.org
*/
package org.jmock.internal;
import java.lang.reflect.Array;
import java.util.HashMap;
import java.util.Map;
import org.hamcrest.Description;
import org.jmock.api.Action;
import org.jmock.api.Imposteriser;
import org.jmock.api.Invocation;
import org.jmock.lib.JavaReflectionImposteriser;
/**
* Returns a value of the invoked method's result type. Returns nothing from
* void methods. Zero or false results are returned for primitive types. Arrays
* and strings are returned with a length of zero. Types that can be
* imposterised by the action's {@link Imposteriser} are returned as <a
* href="http://www.c2.com/cgi/wiki?NullObject">Null Objects</a>. Otherwise
* <code>null</code> is returned. The default value can be overridden for
* specific types.
*
* @author nat
*/
public class ReturnDefaultValueAction implements Action {
private final Map<Class<?>, Object> resultValuesByType = new HashMap<Class<?>, Object>();
private Imposteriser imposteriser;
public ReturnDefaultValueAction(Imposteriser imposteriser) {
this.imposteriser = imposteriser;
createDefaultResults();
}
public ReturnDefaultValueAction() {
this(new JavaReflectionImposteriser());
}
public void setImposteriser(Imposteriser newImposteriser) {
this.imposteriser = newImposteriser;
}
public void describeTo(Description description) {
description.appendText("returns a default value");
}
public void addResult(Class<?> resultType, Object resultValue) {
resultValuesByType.put(resultType, resultValue);
}
public Object invoke(Invocation invocation) throws Throwable {
Class<?> returnType = invocation.getInvokedMethod().getReturnType();
if (resultValuesByType.containsKey(returnType)) {
return resultValuesByType.get(returnType);
}
else if (returnType.isArray()) {
return Array.newInstance(returnType.getComponentType(), 0);
}
else if (imposteriser.canImposterise(returnType)) {
return imposteriser.imposterise(this, returnType);
}
else {
return null;
}
}
protected void createDefaultResults() {
addResult(boolean.class, Boolean.FALSE);
addResult(void.class, null);
addResult(byte.class, new Byte((byte)0));
addResult(short.class, new Short((short)0));
addResult(int.class, new Integer(0));
addResult(long.class, new Long(0L));
addResult(char.class, new Character('\0'));
addResult(float.class, new Float(0.0F));
addResult(double.class, new Double(0.0));
addResult(Boolean.class, Boolean.FALSE);
addResult(Byte.class, new Byte((byte)0));
addResult(Short.class, new Short((short)0));
addResult(Integer.class, new Integer(0));
addResult(Long.class, new Long(0L));
addResult(Character.class, new Character('\0'));
addResult(Float.class, new Float(0.0F));
addResult(Double.class, new Double(0.0));
addResult(String.class, "");
addResult(Object.class, new Object());
}
}
PK
<00>d<EFBFBD>8<11><>S<EFBFBD> <00> ,org/jmock/internal/SearchingClassLoader.javapackage org.jmock.internal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import static java.lang.Thread.currentThread;
public class SearchingClassLoader extends ClassLoader {
private final ClassLoader nextToSearch;
public SearchingClassLoader(ClassLoader parent, ClassLoader nextToSearch) {
super(parent);
this.nextToSearch = nextToSearch;
}
public static ClassLoader combine(ClassLoader... parentLoaders) {
return combine(Arrays.asList(parentLoaders));
}
public static ClassLoader combine(List<ClassLoader> parentLoaders) {
ClassLoader loader = parentLoaders.get(parentLoaders.size()-1);
for (int i = parentLoaders.size()-2; i >= 0; i--) {
loader = new SearchingClassLoader(parentLoaders.get(i), loader);
}
return loader;
}
public static ClassLoader combineLoadersOf(Class<?>... classes) {
return combineLoadersOf(classes[0], classes);
}
public static ClassLoader combineLoadersOf(Class<?> first, Class<?>... others) {
List<ClassLoader> loaders = new ArrayList<ClassLoader>();
addIfNewElement(loaders, first.getClassLoader());
for (Class<?> c : others) {
addIfNewElement(loaders, c.getClassLoader());
}
// To support Eclipse Plug-in tests.
// In an Eclipse plug-in, jMock itself will not be on the system class loader
// but in the class loader of the plug-in.
//
// Note: I've been unable to reproduce the error in jMock's test suite.
addIfNewElement(loaders, SearchingClassLoader.class.getClassLoader());
// To support the Maven Surefire plugin.
// Note: I've been unable to reproduce the error in jMock's test suite.
addIfNewElement(loaders, currentThread().getContextClassLoader());
addIfNewElement(loaders, ClassLoader.getSystemClassLoader());
return combine(loaders);
}
private static void addIfNewElement(List<ClassLoader> loaders, ClassLoader c) {
if (c != null && !loaders.contains(c)) {
loaders.add(c);
}
}
@Override
protected Class<?> findClass(String name) throws ClassNotFoundException {
if (nextToSearch != null) {
return nextToSearch.loadClass(name);
}
else {
return super.findClass(name); // will throw ClassNotFoundException
}
}
}
PK
tHb6qD<71>5@@"org/jmock/internal/SideEffect.javapackage org.jmock.internal;
import org.hamcrest.SelfDescribing;
import org.jmock.api.Action;
/**
* An expectation has one {@link Action} but can have zero or more SideEffects
* that are triggered before the Action.
*
* @author nat
*
*/
public interface SideEffect extends SelfDescribing {
void perform();
}
PK
<00><03>:>1f<><00>,org/jmock/internal/SingleThreadedPolicy.javapackage org.jmock.internal;
import java.util.ConcurrentModificationException;
import org.jmock.api.Invocation;
import org.jmock.api.Invokable;
import org.jmock.api.ThreadingPolicy;
import org.jmock.lib.concurrent.Synchroniser;
public class SingleThreadedPolicy implements ThreadingPolicy {
private final Thread testThread;
public SingleThreadedPolicy() {
this.testThread = Thread.currentThread();
}
public Invokable synchroniseAccessTo(final Invokable mockObject) {
return new Invokable() {
public Object invoke(Invocation invocation) throws Throwable {
checkRunningOnTestThread();
return mockObject.invoke(invocation);
}
};
}
private void checkRunningOnTestThread() {
if (Thread.currentThread() != testThread) {
reportError("the Mockery is not thread-safe: use a " +
Synchroniser.class.getSimpleName() + " to ensure thread safety");
}
}
private void reportError(String error) {
System.err.println(error);
throw new ConcurrentModificationException(error);
}
}
PK
tHb6<62>h<EFBFBD><68>ddorg/jmock/internal/State.javapackage org.jmock.internal;
public interface State extends StatePredicate {
void activate();
}
PK
I<>K9<4B>C<EFBFBD><43>{{$org/jmock/internal/StateMachine.javapackage org.jmock.internal;
import org.hamcrest.Description;
import org.hamcrest.StringDescription;
import org.jmock.States;
public class StateMachine implements States {
private final String name;
private String currentState = null;
public StateMachine(String name) {
this.name = name;
}
@Override
public String toString() {
return StringDescription.asString(this);
}
public States startsAs(String initialState) {
become(initialState);
return this;
}
public void become(String nextState) {
currentState = nextState;
}
public State is(final String state) {
return new State() {
public void activate() {
currentState = state;
}
public boolean isActive() {
return state.equals(currentState);
}
public void describeTo(Description description) {
description.appendText(name).appendText(" is ").appendText(state);
}
};
}
public StatePredicate isNot(final String state) {
return new StatePredicate() {
public boolean isActive() {
return !state.equals(currentState);
}
public void describeTo(Description description) {
description.appendText(name).appendText(" is not ").appendText(state);
}
};
}
public void describeTo(Description description) {
description.appendText(name)
.appendText(currentState == null ? " has no current state" : (" is " + currentState));
}
}
PK
tHb6<62><36><EFBFBD>4<EFBFBD><00>&org/jmock/internal/StatePredicate.javapackage org.jmock.internal;
import org.hamcrest.SelfDescribing;
public interface StatePredicate extends SelfDescribing {
boolean isActive();
}
PK
I<>K9j<39><6A><EFBFBD>( ( 4org/jmock/internal/matcher/AllParametersMatcher.javapackage org.jmock.internal.matcher;
import static java.util.Arrays.asList;
import java.util.List;
import org.hamcrest.Description;
import org.hamcrest.Matcher;
import org.hamcrest.TypeSafeDiagnosingMatcher;
import org.hamcrest.core.IsEqual;
import org.jmock.internal.ParametersMatcher;
public class AllParametersMatcher extends TypeSafeDiagnosingMatcher<Object[]> implements ParametersMatcher {
private final Matcher<Object>[] elementMatchers;
public AllParametersMatcher(Object[] expectedValues) {
this.elementMatchers = equalMatchersFor(expectedValues);
}
@SuppressWarnings("unchecked")
public AllParametersMatcher(List<Matcher<?>> parameterMatchers) {
this.elementMatchers = parameterMatchers.toArray(new Matcher[0]);
}
public boolean isCompatibleWith(Object[] parameters) {
return elementMatchers.length == parameters.length;
}
@Override
public boolean matchesSafely(Object[] parameters, Description mismatch) {
return matchesNumberOfParameters(parameters, mismatch)
&& matchesParameters(parameters, mismatch);
}
private boolean matchesNumberOfParameters(Object[] parameters, Description mismatch) {
if (elementMatchers.length != parameters.length) {
mismatch.appendText("wrong number of parameters: ")
.appendValue(parameters);
return false;
}
return true;
}
private boolean matchesParameters(Object[] parameters, Description mismatch) {
boolean result = true;
for (int i = 0; i < parameters.length; i++) {
result &= matchesParameter(parameters[i], elementMatchers[i], mismatch, i);
}
return result;
}
private boolean matchesParameter(final Object value, final Matcher<Object> matcher, Description mismatch, int index) {
mismatch.appendText("\n parameter " + index + " ");
final boolean parameterMatches = matcher.matches(value);
if (parameterMatches) {
mismatch.appendText("matched: ").appendDescriptionOf(matcher);
} else {
mismatch.appendText("did not match: ")
.appendDescriptionOf(matcher)
.appendText(", because ");
matcher.describeMismatch(value, mismatch);
}
return parameterMatches;
}
public void describeTo(Description description) {
description.appendList("(", ", ",")", asList(elementMatchers));
}
@SuppressWarnings("unchecked")
private static Matcher<Object>[] equalMatchersFor(Object[] expectedValues) {
Matcher<Object>[] matchers = new Matcher[expectedValues.length];
for (int i = 0; i < expectedValues.length; i++) {
matchers[i] = new IsEqual<Object>(expectedValues[i]);
}
return matchers;
}
}
PK
a<><61>9<EFBFBD>V<06>-org/jmock/internal/matcher/MethodMatcher.javapackage org.jmock.internal.matcher;
import java.lang.reflect.Method;
import org.hamcrest.Description;
import org.hamcrest.TypeSafeMatcher;
public class MethodMatcher extends TypeSafeMatcher<Method> {
private Method expectedMethod;
public MethodMatcher(Method expectedMethod) {
super(Method.class);
this.expectedMethod = expectedMethod;
}
@Override
public boolean matchesSafely(Method m) {
return expectedMethod.equals(m);
}
@Override
protected void describeMismatchSafely(Method m, Description mismatchDescription) {
mismatchDescription.appendText("was ").appendText(m.getName());
}
public void describeTo(Description description) {
description.appendText(expectedMethod.getName());
}
}
PK
a<><61>9<EFBFBD><00>fMM1org/jmock/internal/matcher/MethodNameMatcher.java/**
*
*/
package org.jmock.internal.matcher;
import java.lang.reflect.Method;
import java.util.regex.Pattern;
import org.hamcrest.Description;
import org.hamcrest.TypeSafeMatcher;
public class MethodNameMatcher extends TypeSafeMatcher<Method> {
Pattern namePattern;
public MethodNameMatcher(String nameRegex) {
namePattern = Pattern.compile(nameRegex);
}
@Override
public boolean matchesSafely(Method method) {
return namePattern.matcher(method.getName()).matches();
}
@Override
protected void describeMismatchSafely(Method item, Description mismatchDescription) {
mismatchDescription.appendText("was method ").appendText(item.getName());
}
public void describeTo(Description description) {
description.appendText(namePattern.toString());
}
}PK
<00>a=6<>_s<5F><73><00>1org/jmock/internal/matcher/MockObjectMatcher.javapackage org.jmock.internal.matcher;
import org.hamcrest.BaseMatcher;
import org.hamcrest.Description;
public class MockObjectMatcher extends BaseMatcher<Object> {
private Object mockObject;
public MockObjectMatcher(Object mockObject) {
this.mockObject = mockObject;
}
public boolean matches(Object o) {
return o == mockObject;
}
public void describeTo(Description description) {
description.appendText(mockObject.toString());
}
}
PK
I<>K9<4B>_  1org/jmock/internal/matcher/ParametersMatcher.javapackage org.jmock.internal.matcher;
import java.util.List;
import org.hamcrest.Matcher;
import org.hamcrest.collection.IsArray;
import org.hamcrest.core.IsEqual;
public class ParametersMatcher extends IsArray<Object> {
public ParametersMatcher(Object[] expectedValues) {
super(equalMatchersFor(expectedValues));
}
@SuppressWarnings("unchecked")
private static Matcher<Object>[] equalMatchersFor(Object[] expectedValues) {
Matcher<Object>[] matchers = new Matcher[expectedValues.length];
for (int i = 0; i < expectedValues.length; i++) {
matchers[i] = new IsEqual<Object>(expectedValues[i]);
}
return matchers;
}
@SuppressWarnings("unchecked")
public ParametersMatcher(List<Matcher<?>> parameterMatchers) {
super(parameterMatchers.toArray(new Matcher[0]));
}
@Override
protected String descriptionStart() {
return "(";
}
@Override
protected String descriptionEnd() {
return ")";
}
}
PK
<00>^y5h<35> <0C><00>+org/jmock/lib/AssertionErrorTranslator.javapackage org.jmock.lib;
import org.hamcrest.StringDescription;
import org.jmock.api.ExpectationError;
import org.jmock.api.ExpectationErrorTranslator;
/**
* Translates {@link org.jmock.api.ExpectationError}s into
* {@link java.lang.AssertionError}s that several
* test frameworks, including JUnit 4 and TestNG, use to report
* errors.
*
* @author npryce
*
*/
public class AssertionErrorTranslator implements ExpectationErrorTranslator {
public static final AssertionErrorTranslator INSTANCE = new AssertionErrorTranslator();
public Error translate(ExpectationError e) {
return new AssertionError(StringDescription.toString(e));
}
private AssertionErrorTranslator() {}
}
PK
:fX6ȓEiee(org/jmock/lib/CamelCaseNamingScheme.javapackage org.jmock.lib;
import org.jmock.api.MockObjectNamingScheme;
/**
* A naming scheme in which the implicit name for a mock object is
* the mocked type's name with the first character in lower case.
* E.g. A mock object of type HelloWorld would be named "helloWorld".
* Initial acronyms are completely lowercased. For example, the type
* HTTPClient would be named httpClient.
*
* This is the naming scheme used by default.
*
* @author npryce
*/
public class CamelCaseNamingScheme implements MockObjectNamingScheme {
public static final CamelCaseNamingScheme INSTANCE = new CamelCaseNamingScheme();
public String defaultNameFor(Class<?> typeToMock) {
String simpleName = typeToMock.getSimpleName();
int lci = indexOfFirstLowerCaseLetter(simpleName);
if (lci == 0) {
return simpleName;
}
int capsEnd = (lci == 1 || lci == simpleName.length()) ? lci : lci - 1;
String caps = simpleName.substring(0, capsEnd);
String rest = simpleName.substring(capsEnd);
return caps.toLowerCase() + rest;
}
private int indexOfFirstLowerCaseLetter(String simpleName) {
int i = 0;
while (i < simpleName.length() && !Character.isLowerCase(simpleName.charAt(i))) {
i++;
}
return i;
}
}
PK
a<><61>9F<39>H<><00>&org/jmock/lib/CurrentStateMatcher.javapackage org.jmock.lib;
import org.hamcrest.Description;
import org.hamcrest.Factory;
import org.hamcrest.Matcher;
import org.hamcrest.TypeSafeMatcher;
import org.jmock.States;
public class CurrentStateMatcher extends TypeSafeMatcher<States> {
private final String stateName;
private final boolean expected;
public CurrentStateMatcher(String stateName, boolean expected) {
this.expected = expected;
this.stateName = stateName;
}
@Override
public boolean matchesSafely(States stateMachine) {
return stateMachine.is(stateName).isActive() == expected;
}
@Override
protected void describeMismatchSafely(States stateMachine, Description mismatchDescription) {
mismatchDescription.appendText("was ");
if (!stateMachine.is(stateName).isActive()) {
mismatchDescription.appendText("not ");
}
mismatchDescription.appendText(stateName);
}
public void describeTo(Description description) {
description.appendText("a state machine that ")
.appendText(expected ? "is " : "is not ")
.appendText(stateName);
}
@Factory
public static Matcher<States> isCurrently(String stateName) {
return new CurrentStateMatcher(stateName, true);
}
@Factory
public static Matcher<States> isNotCurrently(String stateName) {
return new CurrentStateMatcher(stateName, false);
}
}
PK
r<>E6 <0B> <20>ii5org/jmock/lib/IdentityExpectationErrorTranslator.javapackage org.jmock.lib;
import org.jmock.api.ExpectationError;
import org.jmock.api.ExpectationErrorTranslator;
/**
* An {@link ExpectationErrorTranslator} that doesn't do any translation.
* It returns the {@link ExpectationError} it is given.
*
* @author nat
*
*/
public class IdentityExpectationErrorTranslator implements
ExpectationErrorTranslator
{
public static final IdentityExpectationErrorTranslator INSTANCE = new IdentityExpectationErrorTranslator();
private IdentityExpectationErrorTranslator() {}
public Error translate(ExpectationError e) {
return e;
}
}
PK
<20>7<>n<EFBFBD><6E>QQ-org/jmock/lib/JavaReflectionImposteriser.javapackage org.jmock.lib;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import org.jmock.api.Imposteriser;
import org.jmock.api.Invocation;
import org.jmock.api.Invokable;
import org.jmock.internal.SearchingClassLoader;
/**
* An {@link org.jmock.api.Imposteriser} that uses the
* {@link java.lang.reflect.Proxy} class of the Java Reflection API.
*
* @author npryce
*
*/
public class JavaReflectionImposteriser implements Imposteriser {
public static final Imposteriser INSTANCE = new JavaReflectionImposteriser();
public boolean canImposterise(Class<?> type) {
return type.isInterface();
}
@SuppressWarnings("unchecked")
public <T> T imposterise(final Invokable mockObject, Class<T> mockedType, Class<?>... ancilliaryTypes) {
final Class<?>[] proxiedClasses = prepend(mockedType, ancilliaryTypes);
final ClassLoader classLoader = SearchingClassLoader.combineLoadersOf(proxiedClasses);
return (T)Proxy.newProxyInstance(classLoader, proxiedClasses, new InvocationHandler() {
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
return mockObject.invoke(new Invocation(proxy, method, args));
}
});
}
private Class<?>[] prepend(Class<?> first, Class<?>... rest) {
Class<?>[] proxiedClasses = new Class<?>[rest.length+1];
proxiedClasses[0] = first;
System.arraycopy(rest, 0, proxiedClasses, 1, rest.length);
return proxiedClasses;
}
}
PK
tHb6r<36>dw<64><00>'org/jmock/lib/LastWordNamingScheme.javapackage org.jmock.lib;
import static java.lang.Character.isLowerCase;
import static java.lang.Character.isUpperCase;
import static java.lang.Math.max;
import org.jmock.api.MockObjectNamingScheme;
/**
* A naming scheme in which the implicit name for a mock object is
* the last word of the mocked type's name in lower case.
* E.g. A mock object of type HelloWorld would be named "world".
* If the type name is an acronym it is completely lowercased.
* For example, the type URL would be named "url". Digits and other
* non-letter characters are left on the end of the word. For
* example, the type NMEA0183 would be named "nmea0183".
*
* @author npryce
*/
public class LastWordNamingScheme implements MockObjectNamingScheme {
public static MockObjectNamingScheme INSTANCE = new LastWordNamingScheme();
public String defaultNameFor(Class<?> typeToMock) {
String simpleName = typeToMock.getSimpleName();
int wordEnd = indexOfLastLetter(simpleName);
int start;
if (isUpperCase(simpleName.charAt(wordEnd))) {
start = indexOfLastLowerCaseChar(simpleName, wordEnd)+1;
} else {
start = indexOfLastUpperCaseChar(simpleName, wordEnd);
}
return simpleName.substring(max(0,start)).toLowerCase();
}
private int indexOfLastLetter(String simpleName) {
int i = simpleName.length()-1;
while (i > 0 && !Character.isLetter(simpleName.charAt(i))) {
i--;
}
return i;
}
private int indexOfLastUpperCaseChar(String simpleName, int wordEnd) {
int i = wordEnd;
while (i >= 0 && isLowerCase(simpleName.charAt(i))) {
i--;
}
return i;
}
private int indexOfLastLowerCaseChar(String simpleName, int wordEnd) {
int i = wordEnd;
while (i >= 0 && isUpperCase(simpleName.charAt(i))) {
i--;
}
return i;
}
private LastWordNamingScheme() {}
}
PK
<00><>x5<78> <0B>Ş<00>$org/jmock/lib/RetroNamingScheme.javapackage org.jmock.lib;
import org.jmock.api.MockObjectNamingScheme;
/**
* A naming scheme in which the implicit name for a mock object is
* the mocked type's name prepend with "mock".
*
* E.g. A mock object of type HelloWorld would be called "mockHelloWorld".
*
* This was the naming scheme used at Connextra and in many early examples
* of TDD with mock objects.
*
* @author npryce
*
*/
public class RetroNamingScheme implements MockObjectNamingScheme {
public static final RetroNamingScheme INSTANCE = new RetroNamingScheme();
public String defaultNameFor(Class<?> typeToMock) {
return "mock" + typeToMock.getSimpleName();
}
}
PK
<00>C<EFBFBD>6<EFBFBD>tdx66(org/jmock/lib/action/ActionSequence.java/* Copyright (c) 2000-2007 jMock.org
*/
package org.jmock.lib.action;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import org.hamcrest.Description;
import org.jmock.api.Action;
import org.jmock.api.ExpectationError;
import org.jmock.api.Invocation;
/**
* Returns the next of a sequence of elements each time it is invoked.
*
* @author nat
*
*/
public class ActionSequence implements Action {
List<Action> actions;
Iterator<Action> iterator;
public ActionSequence(Action... actions) {
this.actions = new ArrayList<Action>(Arrays.asList(actions));
this.iterator = this.actions.iterator();
}
public Object invoke(Invocation invocation) throws Throwable {
if (iterator.hasNext()) {
return iterator.next().invoke(invocation);
}
throw new ExpectationError("no more actions available", invocation);
}
public void describeTo(Description description) {
description.appendList("", ", and then ", "", actions);
}
}
PK
r<>E6<45><36><EFBFBD>``&org/jmock/lib/action/CustomAction.java/* Copyright (c) 2000-2004 jMock.org
*/
package org.jmock.lib.action;
import org.hamcrest.Description;
import org.jmock.api.Action;
/**
* A partial implementation of the {@link Action} interface that makes it convenient
* to implement application-specific actions with inline anonymous classes.
*/
public abstract class CustomAction implements Action {
private String description;
public CustomAction(String description) {
this.description = description;
}
public void describeTo(Description description) {
description.appendText(this.description);
}
}
PK
r<>E6<45>3}@77%org/jmock/lib/action/DoAllAction.javapackage org.jmock.lib.action;
import java.util.Arrays;
import org.hamcrest.Description;
import org.jmock.api.Action;
import org.jmock.api.Invocation;
/**
* Performs multiple actions every time it is invoked.
*
* @author nat
*
*/
public class DoAllAction implements Action {
private final Action[] actions;
public DoAllAction(Action... actions) {
this.actions = actions.clone();
}
public Object invoke(Invocation invocation) throws Throwable {
Object result = null;
for (int i = 0; i < actions.length; i++) {
result = actions[i].invoke(invocation);
}
return result;
}
public void describeTo(Description description) {
description.appendList("do all of ", ", ", "", Arrays.asList(actions));
}
}
PK
wyw7<77><37>%<25><00>1org/jmock/lib/action/ReturnEnumerationAction.javapackage org.jmock.lib.action;
import static java.util.Collections.enumeration;
import java.util.Arrays;
import java.util.Collection;
import java.util.Enumeration;
import org.hamcrest.Description;
import org.jmock.api.Action;
import org.jmock.api.Invocation;
/**
* Returns an {@link Enumeration} over a collection.
*
* @author nat
*/
public class ReturnEnumerationAction implements Action {
private Collection<?> collection;
public ReturnEnumerationAction(Collection<?> collection) {
this.collection = collection;
}
public ReturnEnumerationAction(Object... array) {
this.collection = Arrays.asList(array);
}
public Enumeration<?> invoke(Invocation invocation) throws Throwable {
return enumeration(collection);
}
public void describeTo(Description description) {
description.appendValueList("return enumeration over ", ", ", "", collection);
}
}
PK
wyw7<77>8 ee.org/jmock/lib/action/ReturnIteratorAction.javapackage org.jmock.lib.action;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
import org.hamcrest.Description;
import org.jmock.api.Action;
import org.jmock.api.Invocation;
/**
* Returns an {@link Iterator} over a collection.
*
* @author nat
*/
public class ReturnIteratorAction implements Action {
private Collection<?> collection;
public ReturnIteratorAction(Collection<?> collection) {
this.collection = collection;
}
public ReturnIteratorAction(Object... array) {
this.collection = Arrays.asList(array);
}
public Iterator<?> invoke(Invocation invocation) throws Throwable {
return collection.iterator();
}
public void describeTo(Description description) {
description.appendValueList("return iterator over ", ", ", "", collection);
}
}
PK
r<>E6<45><36>Qqq+org/jmock/lib/action/ReturnValueAction.java/* Copyright (c) 2000-2004 jMock.org
*/
package org.jmock.lib.action;
import org.hamcrest.Description;
import org.jmock.api.Action;
import org.jmock.api.Invocation;
/**
* Returns a value.
*
* @author nat
*
*/
public class ReturnValueAction implements Action {
private Object result;
public ReturnValueAction(Object result) {
this.result = result;
}
public Object invoke(Invocation invocation) throws Throwable {
return result;
}
public void describeTo(Description description) {
description.appendText("returns ");
description.appendValue(result);
}
}
PK
ce<63>6O<36><4F>+<2B><00>%org/jmock/lib/action/ThrowAction.java/* Copyright (c) 2000-2004 jMock.org
*/
package org.jmock.lib.action;
import org.hamcrest.Description;
import org.jmock.api.Action;
import org.jmock.api.Invocation;
/**
* Throws an exception.
*
* @author nat
*
*/
public class ThrowAction implements Action {
private Throwable throwable;
public ThrowAction(Throwable throwable) {
this.throwable = throwable;
}
public Object invoke(Invocation invocation) throws Throwable {
if (isThrowingCheckedException()) {
checkTypeCompatiblity(invocation.getInvokedMethod().getExceptionTypes());
}
throwable.fillInStackTrace();
throw throwable;
}
public void describeTo(Description description) {
description.appendText("throws ");
description.appendValue(throwable);
}
private void checkTypeCompatiblity(Class<?>[] allowedExceptionTypes) {
for (int i = 0; i < allowedExceptionTypes.length; i++) {
if (allowedExceptionTypes[i].isInstance(throwable))
return;
}
reportIncompatibleCheckedException(allowedExceptionTypes);
}
private void reportIncompatibleCheckedException(Class<?>[] allowedTypes) {
StringBuffer message = new StringBuffer();
message.append("tried to throw a ");
message.append(throwable.getClass().getName());
message.append(" from a method that throws ");
if (allowedTypes.length == 0) {
message.append("no exceptions");
} else {
for (int i = 0; i < allowedTypes.length; i++) {
if (i > 0)
message.append(",");
message.append(allowedTypes[i].getName());
}
}
throw new IllegalStateException(message.toString());
}
private boolean isThrowingCheckedException() {
return !(throwable instanceof RuntimeException || throwable instanceof Error);
}
}
PK
r<>E6<45><36><EFBFBD><EFBFBD>  $org/jmock/lib/action/VoidAction.java/* Copyright (c) 2000-2004 jMock.org
*/
package org.jmock.lib.action;
import org.hamcrest.Description;
import org.jmock.api.Action;
import org.jmock.api.Invocation;
/**
* Returns nothing from a void method.
*/
public class VoidAction implements Action {
public static final VoidAction INSTANCE = new VoidAction();
public Object invoke(Invocation invocation) throws Throwable {
return null;
}
public void describeTo(Description description) {
description.appendText("is void");
}
}
PK
H}h:<3A><><EFBFBD><EFBFBD><EFBFBD><00>%org/jmock/lib/concurrent/Blitzer.javapackage org.jmock.lib.concurrent;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeoutException;
/**
* A class that "blitzes" an object by calling it many times, from multiple
* threads. Used for stress-testing synchronisation.
*
* @author nat
*/
public class Blitzer {
/**
* The default number of threads to run concurrently.
*/
public static final int DEFAULT_THREAD_COUNT = 2;
private final ExecutorService executorService;
private final int actionCount;
public Blitzer(int actionCount) {
this(actionCount, DEFAULT_THREAD_COUNT);
}
public Blitzer(int actionCount, int threadCount) {
this.actionCount = actionCount;
this.executorService = Executors.newFixedThreadPool(threadCount);
}
public Blitzer(int actionCount, ExecutorService executorService) {
this.actionCount = actionCount;
this.executorService = executorService;;
}
public int totalActionCount() {
return actionCount;
}
public void blitz(final Runnable action) throws InterruptedException {
spawnThreads(action).await();
}
public void blitz(long timeoutMs, final Runnable action) throws InterruptedException, TimeoutException {
if (!spawnThreads(action).await(timeoutMs, MILLISECONDS)) {
throw new TimeoutException("timed out waiting for blitzed actions to complete successfully");
}
}
private CountDownLatch spawnThreads(final Runnable action) {
final CountDownLatch finished = new CountDownLatch(actionCount);
for (int i = 0; i < actionCount; i++) {
executorService.execute(new Runnable() {
public void run() {
try {
action.run();
}
finally {
finished.countDown();
}
}
});
}
return finished;
}
public void shutdown() {
executorService.shutdown();
}
}
PK
<00>h<EFBFBD>8<EFBFBD>0<><30><00>3org/jmock/lib/concurrent/DeterministicExecutor.javapackage org.jmock.lib.concurrent;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Executor;
/**
* An {@link Executor} that executes commands on the thread that calls
* {@link #runPendingCommands() runPendingCommands} or {@link #runUntilIdle() runUntilIdle}.
* This is useful when using Mock Objects to test code that spawns background tasks.
*
* @author nat
*/
public class DeterministicExecutor implements Executor {
private List<Runnable> commands = new ArrayList<Runnable>();
public DeterministicExecutor() {
super();
}
/**
* Returns whether this executor is idle -- has no pending background tasks waiting to be run.
*
* @return true if there are no background tasks to be run, false otherwise.
* @see #runPendingCommands()
* @see #runUntilIdle()
*/
public boolean isIdle() {
return commands.isEmpty();
}
/**
* Runs all commands that are currently pending. If those commands also
* schedule commands for execution, the scheduled commands will <em>not</em>
* be executed until the next call to {@link #runPendingCommands()} or
* {@link #runUntilIdle()}.
*/
public void runPendingCommands() {
List<Runnable> commandsToRun = commands;
commands = new ArrayList<Runnable>();
for (Runnable command: commandsToRun) {
command.run();
}
}
/**
* Runs executed commands until there are no commands pending execution, but
* does not tick time forward.
*/
public void runUntilIdle() {
while (!isIdle()) {
runPendingCommands();
}
}
public void execute(Runnable command) {
commands.add(command);
}
}
PK
<00>{1;<3B>0<><30>"<00>"4org/jmock/lib/concurrent/DeterministicScheduler.javapackage org.jmock.lib.concurrent;
import java.util.Collection;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.Delayed;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import org.jmock.lib.concurrent.internal.DeltaQueue;
/**
* A {@link ScheduledExecutorService} that executes commands on the thread that calls
* {@link #runNextPendingCommand() runNextPendingCommand}, {@link #runUntilIdle() runUntilIdle} or
* {@link #tick(long, TimeUnit) tick}. Objects of this class can also be used
* as {@link Executor}s or {@link ExecutorService}s if you just want to control background execution
* and don't need to schedule commands, but it may be simpler to use a {@link DeterministicExecutor}.
*
* @author nat
*/
public class DeterministicScheduler implements ScheduledExecutorService {
private final DeltaQueue<ScheduledTask<?>> deltaQueue = new DeltaQueue<ScheduledTask<?>>();
/**
* Runs time forwards by a given duration, executing any commands scheduled for
* execution during that time period, and any background tasks spawned by the
* scheduled tasks. Therefore, when a call to tick returns, the executor
* will be idle.
*
* @param duration
* @param timeUnit
*/
public void tick(long duration, TimeUnit timeUnit) {
long remaining = toTicks(duration, timeUnit);
do {
remaining = deltaQueue.tick(remaining);
runUntilIdle();
} while (deltaQueue.isNotEmpty() && remaining > 0);
}
/**
* Runs all commands scheduled to be executed immediately but does
* not tick time forward.
*/
public void runUntilIdle() {
while (!isIdle()) {
runNextPendingCommand();
}
}
/**
* Runs the next command scheduled to be executed immediately.
*/
public void runNextPendingCommand() {
ScheduledTask<?> scheduledTask = deltaQueue.pop();
scheduledTask.run();
if (scheduledTask.repeats()) {
deltaQueue.add(scheduledTask.repeatDelay, scheduledTask);
}
}
/**
* Reports whether scheduler is "idle": has no commands pending immediate execution.
*
* @return true if there are no commands pending immediate execution,
* false if there are commands pending immediate execution.
*/
public boolean isIdle() {
return deltaQueue.isEmpty() || deltaQueue.delay() > 0;
}
public void execute(Runnable command) {
schedule(command, 0, TimeUnit.SECONDS);
}
public ScheduledFuture<?> schedule(Runnable command, long delay, TimeUnit unit) {
ScheduledTask<Void> task = new ScheduledTask<Void>(command);
deltaQueue.add(toTicks(delay, unit), task);
return task;
}
public <V> ScheduledFuture<V> schedule(Callable<V> callable, long delay, TimeUnit unit) {
ScheduledTask<V> task = new ScheduledTask<V>(callable);
deltaQueue.add(toTicks(delay, unit), task);
return task;
}
public ScheduledFuture<?> scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit) {
return scheduleWithFixedDelay(command, initialDelay, period, unit);
}
public ScheduledFuture<?> scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit) {
ScheduledTask<Object> task = new ScheduledTask<Object>(toTicks(delay, unit), command);
deltaQueue.add(toTicks(initialDelay, unit), task);
return task;
}
public boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException {
throw blockingOperationsNotSupported();
}
public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks) throws InterruptedException {
throw blockingOperationsNotSupported();
}
public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit) throws InterruptedException {
throw blockingOperationsNotSupported();
}
public <T> T invokeAny(Collection<? extends Callable<T>> tasks)
throws InterruptedException, ExecutionException
{
throw blockingOperationsNotSupported();
}
public <T> T invokeAny(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)
throws InterruptedException, ExecutionException, TimeoutException
{
throw blockingOperationsNotSupported();
}
public boolean isShutdown() {
throw shutdownNotSupported();
}
public boolean isTerminated() {
throw shutdownNotSupported();
}
public void shutdown() {
throw shutdownNotSupported();
}
public List<Runnable> shutdownNow() {
throw shutdownNotSupported();
}
public <T> Future<T> submit(Callable<T> callable) {
return schedule(callable, 0, TimeUnit.SECONDS);
}
public Future<?> submit(Runnable command) {
return submit(command, null);
}
public <T> Future<T> submit(Runnable command, T result) {
return submit(new CallableRunnableAdapter<T>(command, result));
}
private final class CallableRunnableAdapter<T> implements Callable<T> {
private final Runnable runnable;
private final T result;
public CallableRunnableAdapter(Runnable runnable, T result) {
this.runnable = runnable;
this.result = result;
}
@Override
public String toString() {
return runnable.toString();
}
public T call() throws Exception {
runnable.run();
return result;
}
}
private final class ScheduledTask<T> implements ScheduledFuture<T>, Runnable {
public final long repeatDelay;
public final Callable<T> command;
private boolean isCancelled = false;
private boolean isDone = false;
private T futureResult;
private Exception failure = null;
public ScheduledTask(Callable<T> command) {
this.repeatDelay = -1;
this.command = command;
}
public ScheduledTask(Runnable command) {
this(-1, command);
}
public ScheduledTask(long repeatDelay, Runnable command) {
this.repeatDelay = repeatDelay;
this.command = new CallableRunnableAdapter<T>(command, null);
}
@Override
public String toString() {
return command.toString() + " repeatDelay=" + repeatDelay;
}
public boolean repeats() {
return repeatDelay >= 0;
}
public long getDelay(TimeUnit unit) {
throw new UnsupportedOperationException("not supported");
}
public int compareTo(Delayed o) {
throw new UnsupportedOperationException("not supported");
}
public boolean cancel(boolean mayInterruptIfRunning) {
isCancelled = true;
return deltaQueue.remove(this);
}
public T get() throws InterruptedException, ExecutionException {
if (!isDone) {
throw blockingOperationsNotSupported();
}
if (failure != null) {
throw new ExecutionException(failure);
}
return futureResult;
}
public T get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException {
return get();
}
public boolean isCancelled() {
return isCancelled;
}
public boolean isDone() {
return isDone;
}
public void run() {
try {
futureResult = command.call();
}
catch (Exception e) {
failure = e;
}
isDone = true;
}
}
private long toTicks(long duration, TimeUnit timeUnit) {
return TimeUnit.MILLISECONDS.convert(duration, timeUnit);
}
private UnsupportedSynchronousOperationException blockingOperationsNotSupported() {
return new UnsupportedSynchronousOperationException("cannot perform blocking wait on a task scheduled on a " + DeterministicScheduler.class.getName());
}
private UnsupportedOperationException shutdownNotSupported() {
return new UnsupportedOperationException("shutdown not supported");
}
}
PK
<00><03>:<3A><17>'m m *org/jmock/lib/concurrent/Synchroniser.javapackage org.jmock.lib.concurrent;
import static org.hamcrest.StringDescription.asString;
import java.util.concurrent.TimeoutException;
import org.jmock.api.Invocation;
import org.jmock.api.Invokable;
import org.jmock.api.ThreadingPolicy;
import org.jmock.internal.StatePredicate;
import org.jmock.lib.concurrent.internal.FixedTimeout;
import org.jmock.lib.concurrent.internal.InfiniteTimeout;
import org.jmock.lib.concurrent.internal.Timeout;
import org.junit.Assert;
/**
* A ThreadingPolicy that makes the Mockery thread-safe and
* helps tests synchronise with background threads.
*
* @author Nat Pryce
*/
public class Synchroniser implements ThreadingPolicy {
private final Object sync = new Object();
private Error firstError = null;
/**
* Waits for a StatePredicate to become active.
*
* Warning: this will wait forever unless the test itself has a timeout.
*
* @param p the StatePredicate to wait for
* @throws InterruptedException
*/
public void waitUntil(StatePredicate p) throws InterruptedException {
waitUntil(p, new InfiniteTimeout());
}
/**
* Waits up to a timeout for a StatePredicate to become active. Fails the
* test if the timeout expires.
*
* @param p the StatePredicate to wait for
* @param timeoutMs the timeout in milliseconds
* @throws InterruptedException
*/
public void waitUntil(StatePredicate p, long timeoutMs) throws InterruptedException {
waitUntil(p, new FixedTimeout(timeoutMs));
}
private void waitUntil(StatePredicate p, Timeout timeout) throws InterruptedException {
synchronized(sync) {
while (!p.isActive()) {
try {
sync.wait(timeout.timeRemaining());
}
catch (TimeoutException e) {
if (firstError != null) {
throw firstError;
}
else {
Assert.fail("timed out waiting for " + asString(p));
}
}
}
}
}
public Invokable synchroniseAccessTo(final Invokable mockObject) {
return new Invokable() {
public Object invoke(Invocation invocation) throws Throwable {
return synchroniseInvocation(mockObject, invocation);
}
};
}
private Object synchroniseInvocation(Invokable mockObject, Invocation invocation) throws Throwable {
synchronized (sync) {
try {
return mockObject.invoke(invocation);
}
catch (Error e) {
if (firstError == null) {
firstError = e;
}
throw e;
}
finally {
sync.notifyAll();
}
}
}
}
PK
<00>h<EFBFBD>8<EFBFBD><38>4<EFBFBD><34><00>Forg/jmock/lib/concurrent/UnsupportedSynchronousOperationException.javapackage org.jmock.lib.concurrent;
/**
* Thrown to report that a {@link DeterministicScheduler} has been asked to perform
* a blocking wait, which is not supported.
*
* @author nat
*
*/
public class UnsupportedSynchronousOperationException extends UnsupportedOperationException {
public UnsupportedSynchronousOperationException(String message) {
super(message);
}
}
PK
<00>h<EFBFBD>84<38>b<EFBFBD><62> <00> 1org/jmock/lib/concurrent/internal/DeltaQueue.javapackage org.jmock.lib.concurrent.internal;
public class DeltaQueue<T> {
private static class Node<T> {
public final T value;
public long delay;
public Node<T> next = null;
public Node(T value, long nanos) {
this.value = value;
this.delay = nanos;
}
}
private Node<T> head = null;
public boolean isEmpty() {
return head == null;
}
public boolean isNotEmpty() {
return !isEmpty();
}
public T next() {
return head.value;
}
public long delay() {
return head.delay;
}
public void add(long delay, T value) {
Node<T> newNode = new Node<T>(value, delay);
Node<T> prev = null;
Node<T> next = head;
while (next != null && next.delay <= newNode.delay) {
newNode.delay -= next.delay;
prev = next;
next = next.next;
}
if (prev == null) {
head = newNode;
}
else {
prev.next = newNode;
}
if (next != null) {
next.delay -= newNode.delay;
newNode.next = next;
}
}
public long tick(long timeUnits) {
if (head == null) {
return 0L;
}
else if (head.delay >= timeUnits) {
head.delay -= timeUnits;
return 0L;
}
else {
long leftover = timeUnits - head.delay;
head.delay = 0L;
return leftover;
}
}
public T pop() {
if (head.delay > 0) {
throw new IllegalStateException("cannot pop the head element when it has a non-zero delay");
}
T popped = head.value;
head = head.next;
return popped;
}
public boolean remove(T element) {
Node<T> prev = null;
Node<T> node = head;
while (node != null && node.value != element) {
prev = node;
node = node.next;
}
if (node == null) {
return false;
}
if (node.next != null) {
node.next.delay += node.delay;
}
if (prev == null) {
head = node.next;
}
else {
prev.next = node.next;
}
return true;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(getClass().getSimpleName())
.append("[");
Node<T> node = head;
while (node != null) {
if (node != head) {
sb.append(", ");
}
sb.append("+")
.append(node.delay)
.append(": ")
.append(node.value);
node = node.next;
}
sb.append("]");
return sb.toString();
}
}
PK
H}h:W<><57><EFBFBD><EFBFBD><00>3org/jmock/lib/concurrent/internal/FixedTimeout.javapackage org.jmock.lib.concurrent.internal;
import java.util.concurrent.TimeoutException;
/**
* A Timeout of fixed duration from the time the FixedTimeout object is
* instantiated.
*
* @author nat
*/
public class FixedTimeout implements Timeout {
private final long duration;
private final long start;
public FixedTimeout(long duration) {
this.duration = duration;
this.start = System.currentTimeMillis();
}
public long timeRemaining() throws TimeoutException {
long now = System.currentTimeMillis();
long timeLeft = duration - (now - start);
if (timeLeft <= 0) {
throw new TimeoutException("timed out after " + duration + " ms");
}
return timeLeft;
}
}
PK
H}h:3<05>  6org/jmock/lib/concurrent/internal/InfiniteTimeout.javapackage org.jmock.lib.concurrent.internal;
import java.util.concurrent.TimeoutException;
/**
* A Timeout that never times out.
*
* @author nat
*/
public class InfiniteTimeout implements Timeout {
public long timeRemaining() throws TimeoutException {
return 0L;
}
}
PK
H}h:<3A><07><>ZZ.org/jmock/lib/concurrent/internal/Timeout.javapackage org.jmock.lib.concurrent.internal;
import java.util.concurrent.TimeoutException;
public interface Timeout {
/**
* Returns the time remaining, to be passed to {@link Object#wait(long) wait}
* or throws TimeoutException if the timeout has expired.
*/
public abstract long timeRemaining() throws TimeoutException;
}
PK
k;6<>t9ъ<00>"org/jmock/syntax/ActionClause.javapackage org.jmock.syntax;
import org.jmock.api.Action;
public interface ActionClause {
public abstract void will(Action action);
}
PK
<00>xL5V<><1B><00>/org/jmock/syntax/ArgumentConstraintPhrases.javapackage org.jmock.syntax;
import org.hamcrest.Matcher;
public interface ArgumentConstraintPhrases {
<T> T with(Matcher<T> matcher);
boolean with(Matcher<Boolean> matcher);
byte with(Matcher<Byte> matcher);
short with(Matcher<Short> matcher);
int with(Matcher<Integer> matcher);
long with(Matcher<Long> matcher);
float with(Matcher<Float> matcher);
double with(Matcher<Double> matcher);
}
PK
I<>K9v=<3D>E33'org/jmock/syntax/CardinalityClause.javapackage org.jmock.syntax;
import org.hamcrest.Matcher;
public interface CardinalityClause {
ReceiverClause exactly(int count);
ReceiverClause atLeast(int count);
ReceiverClause between(int minCount, int maxCount);
ReceiverClause atMost(int count);
<T> T oneOf(T mockObject);
<T> T one(T mockObject);
<T> T allowing(T mockObject);
MethodClause allowing(Matcher<?> mockObjectMatcher);
<T> T ignoring(T mockObject);
MethodClause ignoring(Matcher<?> mockObjectMatcher);
<T> T never(T mockObject);
}
PK
5<>56oЕ<6F><D095><00>"org/jmock/syntax/MethodClause.javapackage org.jmock.syntax;
import java.lang.reflect.Method;
import org.hamcrest.Matcher;
public interface MethodClause {
ParametersClause method(Matcher<Method> methodMatcher);
ParametersClause method(String nameRegex);
}
PK
<00>>;5<> <0C> <0C><00>&org/jmock/syntax/ParametersClause.javapackage org.jmock.syntax;
import org.hamcrest.Matcher;
public interface ParametersClause extends MethodClause {
void with(Matcher<?>... parameterMatchers);
void withNoArguments();
}
PK
cf<63>6<EFBFBD><36>J5<4A><00>$org/jmock/syntax/ReceiverClause.javapackage org.jmock.syntax;
import org.hamcrest.Matcher;
public interface ReceiverClause {
<T> T of(T mockObject);
MethodClause of(Matcher<?> objectMatcher);
}
PK
tHb6<62> \<5C><><00>"org/jmock/syntax/StatesClause.javapackage org.jmock.syntax;
import org.jmock.internal.State;
import org.jmock.internal.StatePredicate;
public interface StatesClause {
State is(String name);
StatePredicate isNot(String name);
}
PK
<00><><EFBFBD>;<3B><><EFBFBD>><3E><00> org/jmock/syntax/WithClause.javapackage org.jmock.syntax;
import org.hamcrest.Matcher;
public interface WithClause {
boolean booleanIs(Matcher<?> matcher);
byte byteIs(Matcher<?> matcher);
char charIs(Matcher<?> matcher);
short shortIs(Matcher<?> matcher);
int intIs(Matcher<?> matcher);
long longIs(Matcher<?> matcher);
float floatIs(Matcher<?> matcher);
double doubleIs(Matcher<?> matcher);
<T> T is(Matcher<?> matcher);
}
PK
<00><><EFBFBD>< <00>AMETA-INF/<2F><>PK
<00><><EFBFBD><:<3A><>Wff<00><>+META-INF/MANIFEST.MFPK
<00><><EFBFBD><<00>A<EFBFBD>org/PK
<00><><EFBFBD><
<00>A<EFBFBD>org/jmock/PK
<00><><EFBFBD><<00>A org/jmock/api/PK
<00><><EFBFBD><<00>A9org/jmock/auto/PK
<00><><EFBFBD><<00>Aforg/jmock/auto/internal/PK
<00><><EFBFBD><<00>A<EFBFBD>org/jmock/internal/PK
<00><><EFBFBD><<00>A<EFBFBD>org/jmock/internal/matcher/PK
<00><><EFBFBD><<00>Aorg/jmock/lib/PK
<00><><EFBFBD><<00>A2org/jmock/lib/action/PK
<00><><EFBFBD><<00>Aeorg/jmock/lib/concurrent/PK
<00><><EFBFBD><"<00>A<EFBFBD>org/jmock/lib/concurrent/internal/PK
<00><><EFBFBD><<00>A<EFBFBD>org/jmock/syntax/PK
<00><><EFBFBD><<3C> 3<><33><00><00><> org/jmock/Expectations$1.classPK
<00><><EFBFBD><<3C> <0A><>11<00><>2 org/jmock/Expectations.classPK
<00><><EFBFBD><5_<35><5F><00><>m=org/jmock/Mockery$1.classPK
<00><><EFBFBD><<3C><03><><EFBFBD><00>"<00><><EFBFBD>Aorg/jmock/Mockery$MockObject.classPK
<00><><EFBFBD><<3C><1B><><EFBFBD> <00> <00><><EFBFBD>Iorg/jmock/Mockery.classPK
<00><><EFBFBD>< ew<14><00><00><><EFBFBD>jorg/jmock/Sequence.classPK
<00><><EFBFBD><]7q5<00><><EFBFBD>korg/jmock/States.classPK
<00><><EFBFBD><X<><58>m<EFBFBD><00><00><>:morg/jmock/api/Action.classPK
<00><><EFBFBD><V<><56><EFBFBD><EFBFBD><00><00><>norg/jmock/api/Expectation.classPK
<00><><EFBFBD><<3C><><06>$<00><>)porg/jmock/api/ExpectationError.classPK
<00><><EFBFBD><<3C><>~<7E><><00>.<00><>{vorg/jmock/api/ExpectationErrorTranslator.classPK
<00><><EFBFBD><<3C><00><0F><00> <00><><EFBFBD>worg/jmock/api/Imposteriser.classPK
<00><><EFBFBD><<3C><><EFBFBD><EFBFBD><EFBFBD><00> <00><><EFBFBD>yorg/jmock/api/Invocation$1.classPK
<00><><EFBFBD><9<><39>_<EFBFBD><00><00><>V}org/jmock/api/Invocation.classPK
<00><><EFBFBD><bv<><76><00><00><>|<7C>org/jmock/api/Invokable.classPK
<00><><EFBFBD><<3C>-  *<00><><EFBFBD><EFBFBD>org/jmock/api/MockObjectNamingScheme.classPK
<00><><EFBFBD><v}<7D><><00>#<00><><EFBFBD><EFBFBD>org/jmock/api/ThreadingPolicy.classPK
<00><><EFBFBD><(,<2C>ww<00><><00>org/jmock/auto/Auto.classPK
<00><><EFBFBD><<3C>7X<37>ww<00><><EFBFBD><EFBFBD>org/jmock/auto/Mock.classPK
<00><><EFBFBD><<0E>L<EFBFBD><4C> <00> (<00><>\<5C>org/jmock/auto/internal/Mockomatic.classPK
<00><><EFBFBD><uez<65>***<00><><EFBFBD><EFBFBD>org/jmock/internal/AllDeclaredFields.classPK
<00><><EFBFBD><<3C>i<><69><00>'<00><> <09>org/jmock/internal/CaptureControl.classPK
<00><><EFBFBD><<3C>^)$<24><00>$<00><>+<2B>org/jmock/internal/Cardinality.classPK
<00><><EFBFBD><<3C>a<EFBFBD>F<EFBFBD><00>.<00><>*<2A>org/jmock/internal/ChangeStateSideEffect.classPK
<00><><EFBFBD><,<2C><>m<EFBFBD><00>+<00><><03>org/jmock/internal/ExpectationBuilder.classPK
<00><><EFBFBD><<3C><>!<21><><00>+<00><>5<EFBFBD>org/jmock/internal/ExpectationCapture.classPK
<00><><EFBFBD><c<1D><><00>-<00><>F<EFBFBD>org/jmock/internal/ExpectationCollector.classPK
<00><><EFBFBD><X<>j<10> <00> *<00><>L<EFBFBD>org/jmock/internal/FakeObjectMethods.classPK
<00><><EFBFBD><<3C><>2<EFBFBD>vv#<00><><EFBFBD>org/jmock/internal/Formatting.classPK
<00><><EFBFBD><0ĵ<12><00>2<00><>6<EFBFBD>org/jmock/internal/InStateOrderingConstraint.classPK
<00><><EFBFBD><z)f<><00>3<00><>Y<EFBFBD>org/jmock/internal/InvocationDispatcher$1$1$1.classPK
<00><><EFBFBD><Xÿ1<00><><EFBFBD><EFBFBD>org/jmock/internal/InvocationDispatcher$1$1.classPK
<00><><EFBFBD><I<><49>6<EFBFBD><00>/<00><><EFBFBD><EFBFBD>org/jmock/internal/InvocationDispatcher$1.classPK
<00><><EFBFBD><v <0A>Ȏ<00>-<00><><EFBFBD><EFBFBD>org/jmock/internal/InvocationDispatcher.classPK
<00><><EFBFBD><<3C>j
..+<00><><EFBFBD><EFBFBD>org/jmock/internal/InvocationDiverter.classPK
<00><><EFBFBD><*<2A>p[EEC<00><>I<EFBFBD>org/jmock/internal/InvocationExpectation$AnyParametersMatcher.classPK
<00><><EFBFBD><<06><>M.<00><><EFBFBD><EFBFBD>org/jmock/internal/InvocationExpectation.classPK
<00><><EFBFBD><;<1C>8<EFBFBD><00>5<00><>Xorg/jmock/internal/InvocationExpectationBuilder.classPK
<00><><EFBFBD><g<><67><EFBFBD><EFBFBD><00>:<00><><EFBFBD>)org/jmock/internal/InvocationToExpectationTranslator.classPK
<00><><EFBFBD><<3C><>i<EFBFBD><69><00>C<00><><EFBFBD>-org/jmock/internal/NamedSequence$InSequenceOrderingConstraint.classPK
<00><><EFBFBD><<1F>*/OO&<00><>3org/jmock/internal/NamedSequence.classPK
<00><><EFBFBD><ܧ1<DCA7><31><00>7<00><><EFBFBD>:org/jmock/internal/ObjectMethodExpectationBouncer.classPK
<00><><EFBFBD><<13><>\<5C><00>+<00><><EFBFBD>?org/jmock/internal/OrderingConstraint.classPK
<00><><EFBFBD><<3C>
y<EFBFBD>***<00><>Aorg/jmock/internal/ParametersMatcher.classPK
<00><><EFBFBD><<3C>O<EFBFBD><4F>.<00><>yBorg/jmock/internal/ProxiedObjectIdentity.classPK
<00><><EFBFBD>< T<><05> <00> 1<00><><EFBFBD>Forg/jmock/internal/ReturnDefaultValueAction.classPK
<00><><EFBFBD><]R<>م <00> -<00><><EFBFBD>Torg/jmock/internal/SearchingClassLoader.classPK
<00><><EFBFBD><1 <09><19><00>#<00><><EFBFBD>`org/jmock/internal/SideEffect.classPK
<00><><EFBFBD><Fq77/<00><><EFBFBD>aorg/jmock/internal/SingleThreadedPolicy$1.classPK
<00><><EFBFBD><`<60><>"<22><00>-<00><>(forg/jmock/internal/SingleThreadedPolicy.classPK
<00><><EFBFBD><<3C><>_<EFBFBD><5F><00><00><>Umorg/jmock/internal/State.classPK
<00><><EFBFBD><<0F>̹<EFBFBD><00>'<00><>Anorg/jmock/internal/StateMachine$1.classPK
<00><><EFBFBD><Z<>9<EFBFBD><39><00>'<00><> torg/jmock/internal/StateMachine$2.classPK
<00><><EFBFBD><j+<2B><><EFBFBD><00>%<00><>=yorg/jmock/internal/StateMachine.classPK
<00><><EFBFBD><<3C><><EFBFBD><EFBFBD><EFBFBD><00>'<00><>*<2A>org/jmock/internal/StatePredicate.classPK
<00><><EFBFBD><<3C><1B><><EFBFBD><00>5<00><>+<2B>org/jmock/internal/matcher/AllParametersMatcher.classPK
<00><><EFBFBD><<3C>y<EFBFBD>x.<00><>G<EFBFBD>org/jmock/internal/matcher/MethodMatcher.classPK
<00><><EFBFBD>< <09><18>222<00><><EFBFBD><EFBFBD>org/jmock/internal/matcher/MethodNameMatcher.classPK
<00><><EFBFBD><VC<56><43><EFBFBD><00>2<00><><1D>org/jmock/internal/matcher/MockObjectMatcher.classPK
<00><><EFBFBD><<3C>!<21>=((2<00><>2<EFBFBD>org/jmock/internal/matcher/ParametersMatcher.classPK
<00><><EFBFBD><Rf<52>m77,<00><><EFBFBD><EFBFBD>org/jmock/lib/AssertionErrorTranslator.classPK
<00><><EFBFBD>< <20>7(()<00><>+<2B>org/jmock/lib/CamelCaseNamingScheme.classPK
<00><><EFBFBD><<0F>MM'<00><><EFBFBD><EFBFBD>org/jmock/lib/CurrentStateMatcher.classPK
<00><><EFBFBD><E<0E><><00>6<00><>,<2C>org/jmock/lib/IdentityExpectationErrorTranslator.classPK
<00><><EFBFBD><<3C><><EFBFBD>BDD0<00><><1E>org/jmock/lib/JavaReflectionImposteriser$1.classPK
<00><><EFBFBD><e<>֥<EFBFBD><00>.<00><><EFBFBD><EFBFBD>org/jmock/lib/JavaReflectionImposteriser.classPK
<00><><EFBFBD><<3C><>*%%(<00><><EFBFBD><EFBFBD>org/jmock/lib/LastWordNamingScheme.classPK
<00><><EFBFBD><<3C><1E><><EFBFBD><00>%<00><>$<24>org/jmock/lib/RetroNamingScheme.classPK
<00><><EFBFBD><
<EFBFBD><04><00>)<00><><1F>org/jmock/lib/action/ActionSequence.classPK
<00><><EFBFBD><<02><>}<7D><00>'<00><><10>org/jmock/lib/action/CustomAction.classPK
<00><><EFBFBD><J[<<3C><00>&<00><><06>org/jmock/lib/action/DoAllAction.classPK
<00><><EFBFBD><<3C><39><00>2<00><>=<3D>org/jmock/lib/action/ReturnEnumerationAction.classPK
<00><><EFBFBD><<3C><>,(<28><00>/<00><>_<EFBFBD>org/jmock/lib/action/ReturnIteratorAction.classPK
<00><><EFBFBD><<3C><><EFBFBD>@,<00><>Q<EFBFBD>org/jmock/lib/action/ReturnValueAction.classPK
<00><><EFBFBD><s<><73>-
-
&<00><><EFBFBD><EFBFBD>org/jmock/lib/action/ThrowAction.classPK
<00><><EFBFBD><<3C><>v<EFBFBD><76><00>%<00><>org/jmock/lib/action/VoidAction.classPK
<00><><EFBFBD><<3C>Q(<28><00>(<00><><EFBFBD>
org/jmock/lib/concurrent/Blitzer$1.classPK
<00><><EFBFBD><<3C>C<EFBFBD><43>  &<00><>#org/jmock/lib/concurrent/Blitzer.classPK
<00><><EFBFBD><<08><>oo4<00><>~org/jmock/lib/concurrent/DeterministicExecutor.classPK
<00><><EFBFBD><f<>
<EFBFBD><00>M<00><>?org/jmock/lib/concurrent/DeterministicScheduler$CallableRunnableAdapter.classPK
<00><><EFBFBD><<3C>5<><35><00>C<00><>}$org/jmock/lib/concurrent/DeterministicScheduler$ScheduledTask.classPK
<00><><EFBFBD>< <0A>],<2C> <00> 5<00><><EFBFBD>6org/jmock/lib/concurrent/DeterministicScheduler.classPK
<00><><EFBFBD><>TT-<00><>Xorg/jmock/lib/concurrent/Synchroniser$1.classPK
<00><><EFBFBD><<3C> j<>5 5 +<00><><EFBFBD>\org/jmock/lib/concurrent/Synchroniser.classPK
<00><><EFBFBD><Ϸpk<70><00>G<00><>4iorg/jmock/lib/concurrent/UnsupportedSynchronousOperationException.classPK
<00><><EFBFBD><zC)<29>667<00><>{korg/jmock/lib/concurrent/internal/DeltaQueue$Node.classPK
<00><><EFBFBD><
<12>5^ ^ 2<00><>oorg/jmock/lib/concurrent/internal/DeltaQueue.classPK
<00><><EFBFBD><R<><52><EFBFBD>  4<00><><EFBFBD>{org/jmock/lib/concurrent/internal/FixedTimeout.classPK
<00><><EFBFBD><8<>L+7<00><><13>org/jmock/lib/concurrent/internal/InfiniteTimeout.classPK
<00><><EFBFBD><<3C>E6<><00>/<00><>}<7D>org/jmock/lib/concurrent/internal/Timeout.classPK
<00><><EFBFBD><<3C>1T<11><00>#<00><><EFBFBD><EFBFBD>org/jmock/syntax/ActionClause.classPK
<00><><EFBFBD><<17>p/<2F><00>0<00><><EFBFBD><EFBFBD>org/jmock/syntax/ArgumentConstraintPhrases.classPK
<00><><EFBFBD><<3C>4<EFBFBD><18><00>(<00><>|<7C>org/jmock/syntax/CardinalityClause.classPK
<00><><EFBFBD><=<1F>"yy#<00><>E<EFBFBD>org/jmock/syntax/MethodClause.classPK
<00><><EFBFBD><F<><46><EFBFBD>'''<00><><EFBFBD><EFBFBD>org/jmock/syntax/ParametersClause.classPK
<00><><EFBFBD><v_<76>1pp%<00><>k<EFBFBD>org/jmock/syntax/ReceiverClause.classPK
<00><><EFBFBD><<3C>2$<24>#<00><><1E>org/jmock/syntax/StatesClause.classPK
<00><><EFBFBD><<3C><><EFBFBD>W<EFBFBD><00>!<00><>a<EFBFBD>org/jmock/syntax/WithClause.classPK
<00>Y!<<3C><1F>_<EFBFBD>-<00>-<00><>A<EFBFBD>org/jmock/Expectations.javaPK
<00><><EFBFBD>:=<3D>kcM)M)<00><>G<EFBFBD>org/jmock/Mockery.javaPK
JUz6<7A><36><EFBFBD><EFBFBD>::<00><><EFBFBD><EFBFBD>org/jmock/Sequence.javaPK
<00>d/8<>^<5E><><00><>7<EFBFBD>org/jmock/States.javaPK
<00>a=6U7<55><37>  <00><><EFBFBD>org/jmock/api/Action.javaPK
I<>K9D<04>.jj<00><><EFBFBD><EFBFBD>org/jmock/api/Expectation.javaPK
<00>C<EFBFBD>6v_<76>..#<00><>i<EFBFBD>org/jmock/api/ExpectationError.javaPK
<00><>x5?<3F>cee-<00><><EFBFBD>org/jmock/api/ExpectationErrorTranslator.javaPK
<00><>96߳<><00><00><><EFBFBD>org/jmock/api/Imposteriser.javaPK
SAh7<68><37><EFBFBD><EFBFBD>EE<00><>i org/jmock/api/Invocation.javaPK
<00><>x50q<30><71><00><00><><EFBFBD>org/jmock/api/Invokable.javaPK
<00><>x5<78><57><00>)<00><> org/jmock/api/MockObjectNamingScheme.javaPK
<00><03>:<3A>EGtvv"<00><>"org/jmock/api/ThreadingPolicy.javaPK
a<><61>;<3B><>b<EFBFBD><00><><EFBFBD>"org/jmock/auto/Auto.javaPK
a<><61>;>/<2F><><00><>$org/jmock/auto/Mock.javaPK
Z!< <0B><EFBFBD>W W '<00><>g%org/jmock/auto/internal/Mockomatic.javaPK
n<><6E><<3C>H<EFBFBD><48><EFBFBD><00>)<00><>/org/jmock/internal/AllDeclaredFields.javaPK
O<>8$<24>`w<><00>&<00><>'1org/jmock/internal/CaptureControl.javaPK
G<><47>7P<37><17>~ ~ #<00><><EFBFBD>1org/jmock/internal/Cardinality.javaPK
tHb6)J:_<><00>-<00><><EFBFBD>;org/jmock/internal/ChangeStateSideEffect.javaPK
tHb6<62><17>T<EFBFBD><00>*<00><><EFBFBD>=org/jmock/internal/ExpectationBuilder.javaPK
O<>8<EFBFBD><38>)#<23><00>*<00><><EFBFBD>>org/jmock/internal/ExpectationCapture.javaPK
<00>;6
ծ[<5B><00>,<00><><EFBFBD>?org/jmock/internal/ExpectationCollector.javaPK
-[<5B>8<EFBFBD><<3C><03><00>)<00><>l@org/jmock/internal/FakeObjectMethods.javaPK
G<><47>7<EFBFBD><37>gY<67><00>"<00><><EFBFBD>Gorg/jmock/internal/Formatting.javaPK
N~d6%<25><13>&&1<00><><EFBFBD>Horg/jmock/internal/InStateOrderingConstraint.javaPK
I<>K9<4B><39><EFBFBD>ы <00> ,<00><><EFBFBD>Jorg/jmock/internal/InvocationDispatcher.javaPK
<00><>x5*Q0<51>66*<00><><EFBFBD>Worg/jmock/internal/InvocationDiverter.javaPK
<02><>:8:<3A><><EFBFBD><00>-<00><>M[org/jmock/internal/InvocationExpectation.javaPK
I<>K9
<19>(<28><00>4<00><>_rorg/jmock/internal/InvocationExpectationBuilder.javaPK
O<>8<EFBFBD>U4<55><34><00>9<00><><EFBFBD><EFBFBD>org/jmock/internal/InvocationToExpectationTranslator.javaPK
a<><61>;<3B><>/<2F><><00>%<00><><EFBFBD><EFBFBD>org/jmock/internal/NamedSequence.javaPK
-[<5B>8:3<><33><EFBFBD><00>6<00><><EFBFBD><EFBFBD>org/jmock/internal/ObjectMethodExpectationBouncer.javaPK
<00>a=6W<36><57><EFBFBD><EFBFBD><00>*<00><>_<EFBFBD>org/jmock/internal/OrderingConstraint.javaPK
I<>K9s<39>DMtt)<00><>K<EFBFBD>org/jmock/internal/ParametersMatcher.javaPK
-[<5B>8Bq˔<71><00>-<00><><06>org/jmock/internal/ProxiedObjectIdentity.javaPK
ce<63>6LeF<65>t t 0<00><><EFBFBD><EFBFBD>org/jmock/internal/ReturnDefaultValueAction.javaPK
<00>d<EFBFBD>8<11><>S<EFBFBD> <00> ,<00><><EFBFBD><EFBFBD>org/jmock/internal/SearchingClassLoader.javaPK
tHb6qD<71>5@@"<00><>ծorg/jmock/internal/SideEffect.javaPK
<00><03>:>1f<><00>,<00><>U<EFBFBD>org/jmock/internal/SingleThreadedPolicy.javaPK
tHb6<62>h<EFBFBD><68>dd<00><>+<2B>org/jmock/internal/State.javaPK
I<>K9<4B>C<EFBFBD><43>{{$<00><>ʵorg/jmock/internal/StateMachine.javaPK
tHb6<62><36><EFBFBD>4<EFBFBD><00>&<00><><EFBFBD><EFBFBD>org/jmock/internal/StatePredicate.javaPK
I<>K9j<39><6A><EFBFBD>( ( 4<00><>`<60>org/jmock/internal/matcher/AllParametersMatcher.javaPK
a<><61>9<EFBFBD>V<06>-<00><><EFBFBD><EFBFBD>org/jmock/internal/matcher/MethodMatcher.javaPK
a<><61>9<EFBFBD><00>fMM1<00><>@<40>org/jmock/internal/matcher/MethodNameMatcher.javaPK
<00>a=6<>_s<5F><73><00>1<00><><EFBFBD><EFBFBD>org/jmock/internal/matcher/MockObjectMatcher.javaPK
I<>K9<4B>_  1<00><><1A>org/jmock/internal/matcher/ParametersMatcher.javaPK
<00>^y5h<35> <0C><00>+<00><>r<EFBFBD>org/jmock/lib/AssertionErrorTranslator.javaPK
:fX6ȓEiee(<00><><EFBFBD><EFBFBD>org/jmock/lib/CamelCaseNamingScheme.javaPK
a<><61>9F<39>H<><00>&<00><>0<EFBFBD>org/jmock/lib/CurrentStateMatcher.javaPK
r<>E6 <0B> <20>ii5<00><>;<3B>org/jmock/lib/IdentityExpectationErrorTranslator.javaPK
<20>7<>n<EFBFBD><6E>QQ-<00><><EFBFBD><EFBFBD>org/jmock/lib/JavaReflectionImposteriser.javaPK
tHb6r<36>dw<64><00>'<00><><EFBFBD><EFBFBD>org/jmock/lib/LastWordNamingScheme.javaPK
<00><>x5<78> <0B>Ş<00>$<00><><EFBFBD><EFBFBD>org/jmock/lib/RetroNamingScheme.javaPK
<00>C<EFBFBD>6<EFBFBD>tdx66(<00><><EFBFBD><EFBFBD>org/jmock/lib/action/ActionSequence.javaPK
r<>E6<45><36><EFBFBD>``&<00><><17>org/jmock/lib/action/CustomAction.javaPK
r<>E6<45>3}@77%<00><><EFBFBD>org/jmock/lib/action/DoAllAction.javaPK
wyw7<77><37>%<25><00>1<00><>5org/jmock/lib/action/ReturnEnumerationAction.javaPK
wyw7<77>8 ee.<00><>2org/jmock/lib/action/ReturnIteratorAction.javaPK
r<>E6<45><36>Qqq+<00><><EFBFBD> org/jmock/lib/action/ReturnValueAction.javaPK
ce<63>6O<36><4F>+<2B><00>%<00><><EFBFBD>org/jmock/lib/action/ThrowAction.javaPK
r<>E6<45><36><EFBFBD><EFBFBD>  $<00><><EFBFBD>org/jmock/lib/action/VoidAction.javaPK
H}h:<3A><><EFBFBD><EFBFBD><EFBFBD><00>%<00><><EFBFBD>org/jmock/lib/concurrent/Blitzer.javaPK
<00>h<EFBFBD>8<EFBFBD>0<><30><00>3<00><><EFBFBD>!org/jmock/lib/concurrent/DeterministicExecutor.javaPK
<00>{1;<3B>0<><30>"<00>"4<00><>)org/jmock/lib/concurrent/DeterministicScheduler.javaPK
<00><03>:<3A><17>'m m *<00><>WLorg/jmock/lib/concurrent/Synchroniser.javaPK
<00>h<EFBFBD>8<EFBFBD><38>4<EFBFBD><34><00>F<00><> Xorg/jmock/lib/concurrent/UnsupportedSynchronousOperationException.javaPK
<00>h<EFBFBD>84<38>b<EFBFBD><62> <00> 1<00><><EFBFBD>Yorg/jmock/lib/concurrent/internal/DeltaQueue.javaPK
H}h:W<><57><EFBFBD><EFBFBD><00>3<00><><EFBFBD>eorg/jmock/lib/concurrent/internal/FixedTimeout.javaPK
H}h:3<05>  6<00><>Kiorg/jmock/lib/concurrent/internal/InfiniteTimeout.javaPK
H}h:<3A><07><>ZZ.<00><><EFBFBD>jorg/jmock/lib/concurrent/internal/Timeout.javaPK
k;6<>t9ъ<00>"<00><>elorg/jmock/syntax/ActionClause.javaPK
<00>xL5V<><1B><00>/<00><>/morg/jmock/syntax/ArgumentConstraintPhrases.javaPK
I<>K9v=<3D>E33'<00><>"oorg/jmock/syntax/CardinalityClause.javaPK
5<>56oЕ<6F><D095><00>"<00><><EFBFBD>qorg/jmock/syntax/MethodClause.javaPK
<00>>;5<> <0C> <0C><00>&<00><><EFBFBD>rorg/jmock/syntax/ParametersClause.javaPK
cf<63>6<EFBFBD><36>J5<4A><00>$<00><><EFBFBD>sorg/jmock/syntax/ReceiverClause.javaPK
tHb6<62> \<5C><><00>"<00><><EFBFBD>torg/jmock/syntax/StatesClause.javaPK
<00><><EFBFBD>;<3B><><EFBFBD>><3E><00> <00><><EFBFBD>uorg/jmock/syntax/WithClause.javaPK<00><00>j@<00>w