From 696cf779d457c89184ea1d4aa18702f7cca63fd1 Mon Sep 17 00:00:00 2001
From: Yilun Chong <yilunchong@google.com>
Date: Wed, 28 Jun 2017 11:32:01 -0700
Subject: [PATCH] add java supported

---
 conformance/ConformanceJava$1.class           | Bin 1535 -> 1535 bytes
 .../ConformanceJava$BinaryDecoder$1.class     | Bin 863 -> 1241 bytes
 .../ConformanceJava$BinaryDecoder$2.class     | Bin 1014 -> 1482 bytes
 .../ConformanceJava$BinaryDecoder$3.class     | Bin 1644 -> 2256 bytes
 .../ConformanceJava$BinaryDecoder$4.class     | Bin 1479 -> 2057 bytes
 .../ConformanceJava$BinaryDecoder$5.class     | Bin 1650 -> 2270 bytes
 .../ConformanceJava$BinaryDecoder$6.class     | Bin 1716 -> 2339 bytes
 .../ConformanceJava$BinaryDecoder$7.class     | Bin 1310 -> 1860 bytes
 .../ConformanceJava$BinaryDecoder.class       | Bin 2220 -> 2553 bytes
 conformance/ConformanceJava.class             | Bin 7832 -> 9250 bytes
 conformance/ConformanceJava.java              | 201 ++++++++++++++++--
 11 files changed, 184 insertions(+), 17 deletions(-)

diff --git a/conformance/ConformanceJava$1.class b/conformance/ConformanceJava$1.class
index 823d43744ad9afcc8341d50dd53c3e6d35105b8f..ab225e5710171dc5627e09f7b0315190053e4958 100644
GIT binary patch
delta 18
acmey*{hxcobXGRTB@AYawUg(vCIJ9LX9iaQ

delta 18
acmey*{hxcobXGQo{|sgfk0#G$O#%Q&g9jA=

diff --git a/conformance/ConformanceJava$BinaryDecoder$1.class b/conformance/ConformanceJava$BinaryDecoder$1.class
index 940e39f0dd7cec4f30816c636807c6afae2a71c5..b54414b4a12add35e2e812d3b94a6c6d8c73bc75 100644
GIT binary patch
delta 501
zcma)3yG{a85IwWIaF^vNuJVu-R21ATOpt;ENg%N@(OB>SQmi&4kX;%pqov(uV`5?9
zCupUy@B{n<E5AhJ>>3k93n!VGJ7><BJ2&?&`Wh?0d^|k^Xu{GEL0&@~1r1pg1(pPs
zy<#UF9}gVYK6FNt(Y8RvJGwDf2vcZ7V2zON+wP<{9QIGgwi~h=1jjqyt2efS*1qk!
zgOl%8^*6iiy|<E4tS7L6R1kE(LrtYdF#IkVvOwLxq6=k{aNu84&HU$F0n^V*m(&hK
z`d=ddR?3|z{QkgX_9z4hDxWG)LPRyK5<P(K86(6(4smR8r6C0=WE)&bj7F?SNOv>T
z9i$min37?igZ@Kw{H2m-RlO;dj0K(`VG+4-Qm}B6-Q?BdC?kOaf88qPIY(fiw5#!b
LY+V)AAZOH1()Cy1

delta 265
zcmZ9FF;2rk5Jlgt?bzNV5FjBCV(hpJX^}ueNGZ4o1r-f~10Ye-McdMG0jNL}93VHK
z%1sd8E*WWN|NMC~`;%`vllAY{H*iYriP`gbhAE?zgH?H%CwJHP4>u{3)$NNNg;zW8
zCKNr6=^JIJToE!iv@#T~wkj;$lg+|7dJdat^cd-26Hb}X!APYlxsl%NWHGf5>|NT(
zR2u@$RCD^;YUn~;yTACvz5PQk*pd?q+1AN{v}1?e){B`#PqG%^Ii#zM8MA-o+y7Z+
JOf_ea{Q-478ovMl

diff --git a/conformance/ConformanceJava$BinaryDecoder$2.class b/conformance/ConformanceJava$BinaryDecoder$2.class
index 64553b6f4fcd446ebe6fe241730ac80528d0a651..1d3c0862b52673922e65ff91f699a643b8023f1a 100644
GIT binary patch
delta 557
zcma)3OG`pQ6#i!J&9STHBdzRZnWm}b6AGj-Y9W#l<T|*-t&OR8C1~XzXd?q{@<+6a
zXc4saZ?q0twT#XcLZKEOICCD~_su!Xe2Kmz-2Z-g1&~KhgAD-<3s}_P#FB;?EDNj%
ztaXEXE=N;unZ{|W(Qf1f*1JY88D<#iW(77Fyj8<&AJl5q+ooX-*ja{F>{xy>U$>W!
zWm6WRVwk3W^-Bo<)f6OWyMBR~z@`&%B%DZM%R07YndMnZc34PFGnC{5FUb$Kqh=UR
zsEEeL93haE5&p)i@}4K7V~XTEKVt=J%>I802G3!me%WYU>-7txtl#M2OfiiKdRfa9
zasfLSCgr&j@M~1tr~;1Ybif5p$ej}C43QGtgsX&m$i47e9O|r6#VOhoPvFl`A1P-T
w>MA2T1+#>5%we9QI@o5KvN&z#L<my|&}T>BqiCa>gWe;JAhMzzQ7gLbKU=tT1ONa4

delta 287
zcmYLC%TB^j5Iu8gxtH6jAVn<?TWe9lkYM7%#7Bs*GBMGO`^Ml-Aei_8{6TZKet>c3
z%EW~qzz4Y`OxZBW%$zxAX3pICm%)7T`v>40Ee#u<Mg=<>4t6E>Bx-4VU9cy~^ld27
zNGBh(Z$9awoJS~e;3C4Iix^EpU^=2<D#D{9(-sjOn|m>{P6(~E>zT{km$|YYo=W}k
z=w&>8O-9edyW~BI&w5>0Y@CJQ%tL~p7=_H|xU2SQoqj;yj0uI+4spHVNn?|*lnHJB
sajo29i*<|jB7Z0`7T894#br(#oDu5|>Tuz+dlmjbGsDqS2(n&OOF2^_{r~^~

diff --git a/conformance/ConformanceJava$BinaryDecoder$3.class b/conformance/ConformanceJava$BinaryDecoder$3.class
index 104336d566d90afa0fcafd164e8aa2e004f6c01d..ad8bf31d73ae50864bf3b62ae65791d3a9a01c3d 100644
GIT binary patch
delta 776
zcma))K~ED=6otPxo$@B*00oLzpa@#D6f0V)q6oH76c9>_g($iqI6;)qhIWA~_ijux
ziCh1HiE&|~#Kf&De~9rXsCOzx6J2zYd*7XV&O7J5JM-1~(y{RQ`}>bTnsu9Y&f3Ho
zu}LuMSLggHX>*=2n{F;>E^1Pmaf`H#%_W;5E^Dr6uGMo>?Z+yc`&GBFU#^wMHP`FU
zUu6WE(oFx_sj%k`w%kf>r@U8H{6!bhjH0vTR%_Ya-O|&FTW!dsyd^VI|CElW#(Zqq
ztyVX;e`B$K>66~9nn;G25nG2@a^meU$4!S@%sVWwsJZR1#Ii%46-CM`nqluyy|6+Q
z{9e(^8)<V@5%r2jv_*4AF)ySp@6gyYON#u_OE}r&p)_lXk$NHgb|&yzsRM7tEHr<i
zZ|16J1mofVnR(N}o@|?ZIR6Pqgy=x#DAgclqhlpT`_((t8|f*!B)7;41<7GfV9@Ek
z3@&c?$SEwzCCO{FvMxGz>E#}MY!Kx>13Vxij0naL0Roy{O`oP8rHRVS2RJFPDbkk2
zAg7PyW2)8r5FCE?$7D+w55>e4lWoy@Bqlpz@>n#UG;b0hCWZ#XoM{;QljxC15R@Nw
dlH(#Z#0|MwM5fezm5H29n-IuYWc@W{{RBjpj_Uvb

delta 425
zcmXAk&rX^_6vcnTC(P&MLxkcVs8mF2t^ZN9SZj+4Do`yx0yQ+zL@;WMJ2&o)nYi{L
z+_`Y)#+9#O;xnlCtCQR_=iYO2X6|G3*(*N0+};5>ej7T-7zP<Kd}i2ZUwk%V_{yju
z&X{IgGohJunKBrrHCavWvb@wDJg6TYH8k^=SJz1ye$(XN?Fv&m-Dw;g@3xvp_DSU@
zB77Hv$09$(<*~$1k6#o#mRZrPdK4*ntg)_`v9(~_{taA&B5Wx7ZPrQIgcDa~JLzOp
z#cn(2s(LfpcCYMSs5TN^Z8iV34)^QLokpd8QXk3|rU}bx{s~A$=tL2<X`SebNgt99
zN`fEg5l7T+>B^a}WN-z`f)z=q5@VAjTYTgXDQbLTn_h7w2)v5mXcC&F7F}ujWRa9u
rpiQD(9QuU^NHg$%=6|SLDkFNFIl3gKgIQ*ZMji``QgB(2i%$0qPPjNP

diff --git a/conformance/ConformanceJava$BinaryDecoder$4.class b/conformance/ConformanceJava$BinaryDecoder$4.class
index 2bfeda922ce6af8be181642717840a6ca0d23ca7..16a4ce4e6019066f950001203037935185cf7954 100644
GIT binary patch
delta 741
zcma)(O;1xn6o#L<y=9u)R!Xgke28L!eu$I;imhl1B{3KcF>Fk9(U7ZAv2A(_7FpEb
zS4`YAcWdI#y)jYZ!mWw%Pw+>K=QbKm5W^&A&YU^#ndi*R*Wjy2?%R*gUw~;AEkc~K
z80NG^oDqvCqna^ILX!-Tve2Y0`Z=Q+*JRo=bKSvOx$fA@^=hL!rOCFp-sZdlg|*mR
zwQG%g)rzC|OO@43E21m5(<rX3t!&n8r&FC()Z1^C64?nab<K91^4;I5_+EA1O{>}7
zFy}PqL(FnPlM9jOVu(2|xm)U8FwA8yC@6;9TgISUGGeOe-ZX~IdBqj?iJ5mZX1GhU
zptvsK*!Th2nvx>fF2+9W8n2aVy5D`v2k-lVdBbg)iPpbhik^jP<xaK!uv}TSm&zOE
z_+%kNP(H>RKCv)|P;|@cBxYwPkV+4zPpJ2@r-;bhB_3)r_izNGqrU%3-IxA|v4hVY
z^(St7;uG?#urA^aS*;7~k>Hww*_6V^9F?qvaaD6{Uen8QiA_=a#rhcB=lC5gH|ZZ~
z{UL0N{;3eQh44%W&xP<p2rvIb@JV+FVMs3PQN3q~iKT=dWs<|vO+Ql%hz~Kr*^(uv
N%P0hx@w^cU`~<vPi~axr

delta 356
zcmW-b%PvDv6o$WZPTO6lM=z?>UF%l&mZCIG8ka<v7@5@VL@F`Rii+?862oSX#X#Z(
z%nVEg1Mw8zLabvYYp?b1@84^$yXaeJ;p6w^706Sx3DIlQN59PggElczinL-#F&t#X
zMlq@wQ%p2hN-h3#_o7i%Of_#GVxG&u-nc%lo?o8UYYqKv6p{`zidly&ImMjAJb8x&
z7In&evK*H5mzg&T+GnMG%Lbd;HR8HtEg37%@7ANCfBZX{*jl}IQolHJYsb|s_sSj4
zm9u!8dSOaBv|<p}_kpfNM07wD?8+IXT^wQk87SU(q+j-jijY0&Dl%hVULO$VkO)U4
zgxZ+fijGx9CrQyhar?38lHR17p8q@V_qb$Qc#KKfgohX>vu?`-iE@x>uSSD^U3)QV

diff --git a/conformance/ConformanceJava$BinaryDecoder$5.class b/conformance/ConformanceJava$BinaryDecoder$5.class
index c5dea858554a0becfaf9a729f90925418319a39b..e6d0f7bbbb62d61519e17aa575c3f01a582f1f33 100644
GIT binary patch
delta 801
zcma))O;1xn6o#L<y=9u~MOtXpf<@4R1x27#MJvchQK*7Nt4ouHT#X5~q-_i)Chm=i
z){7qt6EOI-*OehAZ2b}b2;*8kw@PB7i%v4<%$fJh`_4Ht-|VlUxi3FHeFjoovuNS4
zMS?zyevWvnquy%3;uwP#5r#CwnxtkVK+3}6xJ5T7G$%EuYnic@T`Prh#mSXR)zXOO
zOzpvXMxZgx`0tYnYi4!HS*hMC6)TFr(uH(F(VBNE)yd`M{M{9&Qm08O$_cm2jMTPM
ziR7S%&pVY$;pPq=|My7RomQg*L8e67W}1xX+stsz<~*}Db7VCaY%Vfyv%n=q((N|G
z?v{EK2$J*m7TpCSWnNaq+(jeSq`9J)m83Rz%P5+8#loK;Jka2!G*=aUwOshal<%W5
zR=uKn-Fs$V<5hi^3#E5-$N#6R2u+uYH%jH(h2oNvE!-)@hbM;EEida0pUfa3q|t8C
zAC0t0+$0e^6dPtAh9EEf+3Oy1kbv07Vrw+>gjUvQ=P4aLBgS(&c|lY%q8L8~@M+pL
z9h&_pO-!2K$pL{)p$^FG;*du#J8SNSze_c{+y0*Wo>0I1Bv_ZM4H0@JIh(ZcT8KA=
z_l*d?6~TAH_r7sKA8{cy=%H7<S?|E!x|m;na+*Ct)lKZIlo=K96r&kS8YN>Qz@+Dc
FfnPO{oVWl0

delta 453
zcmXAkIZs<r5QV?%2fi;?4~&CDu)$yqVKJ-OcMO=F0$RE!WF$b?W)Y%GLrDR;qRwxK
zD3B<SXyHGkPfHyI=E0Tb%+Z`Pb7%fUU%mYE|A$9lm`y`9X+tY*h99&CtRrBZhAuLO
z7~Ps4O|PcUrQcu}&}22kH)}IrD$D-KX+bl3bNeeH#WBtJr(I!|E_Ms$v;9)>)c#fD
zy%8qG;4#ItxIAW<^_U~)G0%c#(Id~2$1*F5LHiW0wSMS29AQ<_Y_m?%#+{g2vwcol
zt=nzqQf=I2DqfT=hqrd3i>2aT>Ey^S?iSYlbH6Q{8=y)~3tmVfLJf+juoM+IlHE*q
zqq;}^7Owaz7?unL!CJmcSKz*~|8&Y;==Pt1BaJJ#FL)r+52fpf1VtJsk)%u$$JC1>
zPUuYpM-$g1wCGCHC`Ts6f-In9ghR9NkSx^lQ45x>lSqpmV}x%qrkWuJ^F}_a5+&y{
IA&DCI9nrfzeE<Le

diff --git a/conformance/ConformanceJava$BinaryDecoder$6.class b/conformance/ConformanceJava$BinaryDecoder$6.class
index d617cce5f32eac7e394edda6ba1a5e08945cd4de..2b03a1257826c45a767b98268fec2796d9ed0c68 100644
GIT binary patch
delta 859
zcma)4O-~b16g_u3<Ezs_+Jg8+snjB+Efy*&f=HpDP%I+W&s{@CV}fndX-r+Qaci`B
z3zsfT+!+f<K^7)z@PnV>!nJ!7^-hfmiJJ5!_r5#to_o%jH}k6LnRj;k$L1RV1GuTf
zjgXEWgmpv^wX0scI%cPsjz0A3XhU4!xWItG2`5hKaN(4W00sq43!JG;k2Jdq*`j66
z74xM$1J70-Jxy|JR3PztlAuqP7tBKGPCjQ5cEFi>oZ!uvR%vW;F>}9QT6LN@p;)P=
zLh+d0N}HCIz5S;Z{2M(ir)V(d!33)sn8Z1jHgFzO2BwiRFoO#Q(wG&vXkZSP49w%Q
zd`Zt;9%Sr?D+IrMtoUSEX{D?3p%S2LvZ_2#uM=ivLhJ5r(22keLXRY^Wp&2!g{WMq
zwn@M0mMdzw@wbU+^Kw)RE&WTB;7R6lxAMii+1!Ge%HGQc`xAX==5J{)2Zsk<5L&o8
z47GmZ3`g2&9kk46gjUYGcn4l^-irfJ>gXqoR{1m<sX^I*Lw?nUmTYhsI_G6Lv4SS7
zGW{A4)Oc_WKCGhy8!Yu2o!G=dMl#_~Za4%E3A76?NuXm~z|SzS24OcxCxZV`PDi3O
zs2rO7rs=dte%HEoIC;xX-m#PS>|~3bd|<^bR{6+IKC#4SrrvJci345iO2JWd*WKAS
kxt}8pjeq|U>|^=>d}BDmg&V^dn$Y>ec_o}k+PmBN3!EjVCjbBd

delta 447
zcmXAkxlWrw6otR>Z#-u56B~me5FD`C_sxI_o7wlJp`@^oktnbcAcO$1mQ-ju8VV$M
z08&x#0C@%8A$2N}`@@ya-OibrGY^qpMf1PkUtWPEYlaZDhC1pE4K#XPlh-wSsm0Jr
zn;}ZOrbE-I=?c<q_(G4SSJQvHGE!Kuo7vmXYErj%_m#37)cpLEE6nuKW_I^rJD=OP
ze^jb7%&-VtMi>>9%NS{waVA_QnR1zCMl<U&$Gpn|i+0`j7zneZsJ25+%+@-kYT2fo
zgnvabXYW;`eJhCDM`uv2J}3Qum3<1VH5E_hb6fenolI^syO24|)ODx3_$nXu!Y2q*
zj3Qz;bVam8=73CaD7lnxqKMcVy?pL5Ef~qi1UaFIQzD#E!Z{UEV_fiqOKP|x&b90i
z`2GpuXeu?|HB~50Y(k5$T4=vKQHUc)JR@-uA3M)jxga5YlmW`*nh?=Gl2b-}OQeGg
Ic{LpT50f50od5s;

diff --git a/conformance/ConformanceJava$BinaryDecoder$7.class b/conformance/ConformanceJava$BinaryDecoder$7.class
index 6522a5e65d63d94578c36e043689169acb03aa04..ba0aaebbaf6c6f22e4822cbfdd447ba2ea70e9e4 100644
GIT binary patch
delta 665
zcma)&&rcIU6vscayE4mmEiJ56k;)GNYpa5_Xce$xB=KMkA>0iy8)8Ce?N%fIf!Aj4
zdi3PMn5gl<$&(53;;*Bqe~0l+Bhf@-nB=`T^X9$J_su*C-lS*W{&>9&RHy}{7!4R>
zJRr+)&4gxBGv#w4poc=h5GOT7&FRj}LSL%6)=J{#R-@fGr<v~De>`s+6v5Ji+i|mf
zr?HtR{-`Qz&MNv><D|W~v9Y?<jFWD6S<x!oFn3kdd0Huyr)@z!PLj3ty@H9qd*;lP
zs%An&x)L(W`H%}#&8B*i3b|+xmlPvr*~y!#6R9~<cgEGcX*zXpL2*;m20A-Yai40M
z%g?u+tWxWy=GOK<<Bq#xcHKhsFBy~fa*OuQ?Q+FJ4x&iQZWOPZ@r$Kl^%C_=a*96j
zJrd!a_zV#aX>-r3uGpJF4v2q`&j)(>DBMp%{LCTA1~}I>gI6^<4$Ik-errb<whYPK
z`lXmFy})@zuX*TAZvDo75$vvDzY6x7V88zd>yj6s!!bs>QucuZVnrD+%NhDbc8D2{
UN=$Kz(zQSaly$|YY-7g%34S+&cmMzZ

delta 340
zcmW+wyGjE=6g@Nhn9XDpcXgx2Bt~P@_}*v&+X(Rm5)k}_B}A|=iHV4<osExWdM*72
z3o9$J^bhQ<MM1plg?netJ&&1}^u6?7f1jQK)KHg@$Vuc;kZ>?5P!yOFn6^-oFfk)g
z7MPFfn+c;A_6Kc&h3N9Zja3YC@1oW2ogH^O1NFuNCy6D2Wg9D4wXp_YdHm5#qRLQI
zKfItmxX0Gj7ca35mD3LN8l$u=PrYm3DliT!?oPLJ)a{>yomRUUo`>aX!$*RC7#F8b
z!UjW1eHz(Jny^U-xS~0P5mKa7-V9D-W)ud^Ygo9Ugj;gnkvD=zTM51|kl7Zb8Y8Te
nUx$Wqx^rYP@xO~-9i}c3=b!?Y7>PN|?n+9eYFJo|PsjQL<YzIv

diff --git a/conformance/ConformanceJava$BinaryDecoder.class b/conformance/ConformanceJava$BinaryDecoder.class
index 3dd7ba076f30d58cb876c7d6da20bde51c0dde6e..ac98465dcaf39020bbb3d18d0d8f97b7b7dc742d 100644
GIT binary patch
delta 577
zcma))O;1xn6o#K^dwYffV^vJh*u+J{jeuf`q)LNWKMR#wwSFOLt6mW-q3P|$m45(M
z6I~J4E_6ZMX~GXc6aR`XNr-XUs|krN+?<o=J?}ebapwKL?E|m2ety~nPO)t8DD}8<
z)i6t0I4M*N8LoFqNw}f$4LUO26snqIhQ5ez3AZ&vhE&9Ngu9wyLx05gggMQKVIboB
z!o22q+HfQi9taOLCk#g;ek9a3)_<tIz0G<n3@WXa_R5&>*uIIa4LwoplCwgf*k298
zcA?RzzHA0z*Pd0h?7P^^aCWpan+?LSzVK(3`P-fso>@Qswr7Fo!lEK=3yHMX$2dzL
zzsEBw@j_9wUt&dD^Tv}xLs53<`~SJXzV<%H75Pr4|6dtfNtTq@_2j6^*{|KYlN=e#
zamL*!#zew}Ig4V-al-X;PAPD4w~~S!m+iC+dO3HkE4D2g`P1xiuESLDX}W8#y3_~C
rd}H3Z<G<f8GTq%X!=USP^t#`0&DQkP!8(&1;yh2e;QA#uC8d7>SX_7u

delta 358
zcmXAlJuib%6vuy0+o$(FH*Hd3pwYz8v_Yvs+lU}uTS`&XTfG!D3yIZW5ebRhwXxYO
zjR}caEaDsZ3PuZVJ!klz^E)rY`F}UxH=VuxJiP$@94c(Gj**;Vni)Z#U{(=jt|3`L
zK@wL;cWGX*An8;DTwW9uC0&Y;%S(b~Nw=cK<rP6ml2Ej|yee3e^h6ZxZev}rA?a0g
zxV$MS*K1#vV;@zHPpX1#UGrS|b_Bcn)qCqy*c0qqMD(W>u>+(yc)0OJEnn3lr$0P7
zZTVCB(*LZ_Mc(r3cagNx`uAUxGGXen4EsZnVN74kn4LDSjq68QAIuPBm@t#XDH&_3
ojB-kW3(BPNGGGkzFk$A6JVngpA`SoY`py{%ZZSlgxiJxve@JjT$N&HU

diff --git a/conformance/ConformanceJava.class b/conformance/ConformanceJava.class
index 74fc5e84088b2940707612687a0b4a9d294fc234..9c1f08c6eaf13638568c4e65e46895799c010042 100644
GIT binary patch
delta 3518
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
F{~D&J_)P!+

delta 2562
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

diff --git a/conformance/ConformanceJava.java b/conformance/ConformanceJava.java
index 7badf2a5f..3a944b51c 100644
--- a/conformance/ConformanceJava.java
+++ b/conformance/ConformanceJava.java
@@ -3,6 +3,7 @@ import com.google.protobuf.CodedInputStream;
 import com.google.protobuf.conformance.Conformance;
 import com.google.protobuf.InvalidProtocolBufferException;
 import com.google.protobuf_test_messages.proto3.TestMessagesProto3;
+import com.google.protobuf_test_messages.proto2.TestMessagesProto2;
 import com.google.protobuf.util.JsonFormat;
 import com.google.protobuf.util.JsonFormat.TypeRegistry;
 import java.io.IOException;
@@ -54,21 +55,31 @@ class ConformanceJava {
   private enum BinaryDecoder {
     BYTE_STRING_DECODER() {
       @Override
-      public TestMessagesProto3.TestAllTypes parse(ByteString bytes)
+      public TestMessagesProto3.TestAllTypes parseProto3(ByteString bytes)
           throws InvalidProtocolBufferException {
         return TestMessagesProto3.TestAllTypes.parseFrom(bytes);
       }
+      @Override
+      public TestMessagesProto2.TestAllTypesProto2 parseProto2(ByteString bytes)
+          throws InvalidProtocolBufferException {
+        return TestMessagesProto2.TestAllTypesProto2.parseFrom(bytes);
+      }
     },
     BYTE_ARRAY_DECODER() {
       @Override
-      public TestMessagesProto3.TestAllTypes parse(ByteString bytes)
+      public TestMessagesProto3.TestAllTypes parseProto3(ByteString bytes)
           throws InvalidProtocolBufferException {
         return TestMessagesProto3.TestAllTypes.parseFrom(bytes.toByteArray());
       }
+      @Override
+      public TestMessagesProto2.TestAllTypesProto2 parseProto2(ByteString bytes)
+          throws InvalidProtocolBufferException {
+        return TestMessagesProto2.TestAllTypesProto2.parseFrom(bytes.toByteArray());
+      }
     },
     ARRAY_BYTE_BUFFER_DECODER() {
       @Override
-      public TestMessagesProto3.TestAllTypes parse(ByteString bytes)
+      public TestMessagesProto3.TestAllTypes parseProto3(ByteString bytes)
           throws InvalidProtocolBufferException {
         ByteBuffer buffer = ByteBuffer.allocate(bytes.size());
         bytes.copyTo(buffer);
@@ -82,10 +93,25 @@ class ConformanceJava {
               "ByteString based ByteBuffer should not throw IOException.", e);
         }
       }
+      @Override
+      public TestMessagesProto2.TestAllTypesProto2 parseProto2(ByteString bytes)
+          throws InvalidProtocolBufferException {
+        ByteBuffer buffer = ByteBuffer.allocate(bytes.size());
+        bytes.copyTo(buffer);
+        buffer.flip();
+        try {
+          return TestMessagesProto2.TestAllTypesProto2.parseFrom(CodedInputStream.newInstance(buffer));
+        } catch (InvalidProtocolBufferException e) {
+          throw e;
+        } catch (IOException e) {
+          throw new RuntimeException(
+              "ByteString based ByteBuffer should not throw IOException.", e);
+        }
+      }
     },
     READONLY_ARRAY_BYTE_BUFFER_DECODER() {
       @Override
-      public TestMessagesProto3.TestAllTypes parse(ByteString bytes)
+      public TestMessagesProto3.TestAllTypes parseProto3(ByteString bytes)
           throws InvalidProtocolBufferException {
         try {
           return TestMessagesProto3.TestAllTypes.parseFrom(
@@ -97,10 +123,23 @@ class ConformanceJava {
               "ByteString based ByteBuffer should not throw IOException.", e);
         }
       }
+      @Override
+      public TestMessagesProto2.TestAllTypesProto2 parseProto2(ByteString bytes)
+          throws InvalidProtocolBufferException {
+        try {
+          return TestMessagesProto2.TestAllTypesProto2.parseFrom(
+              CodedInputStream.newInstance(bytes.asReadOnlyByteBuffer()));
+        } catch (InvalidProtocolBufferException e) {
+          throw e;
+        } catch (IOException e) {
+          throw new RuntimeException(
+              "ByteString based ByteBuffer should not throw IOException.", e);
+        }
+      }
     },
     DIRECT_BYTE_BUFFER_DECODER() {
       @Override
-      public TestMessagesProto3.TestAllTypes parse(ByteString bytes)
+      public TestMessagesProto3.TestAllTypes parseProto3(ByteString bytes)
           throws InvalidProtocolBufferException {
         ByteBuffer buffer = ByteBuffer.allocateDirect(bytes.size());
         bytes.copyTo(buffer);
@@ -114,10 +153,26 @@ class ConformanceJava {
               "ByteString based ByteBuffer should not throw IOException.", e);
         }
       }
+      @Override
+      public TestMessagesProto2.TestAllTypesProto2 parseProto2(ByteString bytes)
+          throws InvalidProtocolBufferException {
+        ByteBuffer buffer = ByteBuffer.allocateDirect(bytes.size());
+        bytes.copyTo(buffer);
+        buffer.flip();
+        try {
+          return TestMessagesProto2.TestAllTypesProto2
+              .parseFrom(CodedInputStream.newInstance(buffer));
+        } catch (InvalidProtocolBufferException e) {
+          throw e;
+        } catch (IOException e) {
+          throw new RuntimeException(
+              "ByteString based ByteBuffer should not throw IOException.", e);
+        }
+      }
     },
     READONLY_DIRECT_BYTE_BUFFER_DECODER() {
       @Override
-      public TestMessagesProto3.TestAllTypes parse(ByteString bytes)
+      public TestMessagesProto3.TestAllTypes parseProto3(ByteString bytes)
           throws InvalidProtocolBufferException {
         ByteBuffer buffer = ByteBuffer.allocateDirect(bytes.size());
         bytes.copyTo(buffer);
@@ -132,10 +187,26 @@ class ConformanceJava {
               "ByteString based ByteBuffer should not throw IOException.", e);
         }
       }
+      @Override
+      public TestMessagesProto2.TestAllTypesProto2 parseProto2(ByteString bytes)
+          throws InvalidProtocolBufferException {
+        ByteBuffer buffer = ByteBuffer.allocateDirect(bytes.size());
+        bytes.copyTo(buffer);
+        buffer.flip();
+        try {
+          return TestMessagesProto2.TestAllTypesProto2.parseFrom(
+              CodedInputStream.newInstance(buffer.asReadOnlyBuffer()));
+        } catch (InvalidProtocolBufferException e) {
+          throw e;
+        } catch (IOException e) {
+          throw new RuntimeException(
+              "ByteString based ByteBuffer should not throw IOException.", e);
+        }
+      }
     },
     INPUT_STREAM_DECODER() {
       @Override
-      public TestMessagesProto3.TestAllTypes parse(ByteString bytes)
+      public TestMessagesProto3.TestAllTypes parseProto3(ByteString bytes)
           throws InvalidProtocolBufferException {
         try {
           return TestMessagesProto3.TestAllTypes.parseFrom(bytes.newInput());
@@ -146,13 +217,27 @@ class ConformanceJava {
               "ByteString based InputStream should not throw IOException.", e);
         }
       }
+      @Override
+      public TestMessagesProto2.TestAllTypesProto2 parseProto2(ByteString bytes)
+          throws InvalidProtocolBufferException {
+        try {
+          return TestMessagesProto2.TestAllTypesProto2.parseFrom(bytes.newInput());
+        } catch (InvalidProtocolBufferException e) {
+          throw e;
+        } catch (IOException e) {
+          throw new RuntimeException(
+              "ByteString based InputStream should not throw IOException.", e);
+        }
+      }
     };
 
-    public abstract TestMessagesProto3.TestAllTypes parse(ByteString bytes)
+    public abstract TestMessagesProto3.TestAllTypes parseProto3(ByteString bytes)
+        throws InvalidProtocolBufferException;
+    public abstract TestMessagesProto2.TestAllTypesProto2 parseProto2(ByteString bytes)
         throws InvalidProtocolBufferException;
   }
 
-  private TestMessagesProto3.TestAllTypes parseBinary(ByteString bytes)
+  private TestMessagesProto3.TestAllTypes parseBinaryToProto3(ByteString bytes)
       throws InvalidProtocolBufferException {
     TestMessagesProto3.TestAllTypes[] messages =
         new TestMessagesProto3.TestAllTypes[BinaryDecoder.values().length];
@@ -163,7 +248,7 @@ class ConformanceJava {
     boolean hasException = false;
     for (int i = 0; i < BinaryDecoder.values().length; ++i) {
       try {
-        messages[i] = BinaryDecoder.values()[i].parse(bytes);
+        messages[i] = BinaryDecoder.values()[i].parseProto3(bytes);
         hasMessage = true;
       } catch (InvalidProtocolBufferException e) {
         exceptions[i] = e;
@@ -219,16 +304,96 @@ class ConformanceJava {
 
     return messages[0];
   }
+  
+  private TestMessagesProto2.TestAllTypesProto2 parseBinaryToProto2(ByteString bytes)
+      throws InvalidProtocolBufferException {
+    TestMessagesProto2.TestAllTypesProto2[] messages =
+        new TestMessagesProto2.TestAllTypesProto2[BinaryDecoder.values().length];
+    InvalidProtocolBufferException[] exceptions =
+        new InvalidProtocolBufferException[BinaryDecoder.values().length];
+
+    boolean hasMessage = false;
+    boolean hasException = false;
+    for (int i = 0; i < BinaryDecoder.values().length; ++i) {
+      try {
+        messages[i] = BinaryDecoder.values()[i].parseProto2(bytes);
+        hasMessage = true;
+      } catch (InvalidProtocolBufferException e) {
+        exceptions[i] = e;
+        hasException = true;
+      }
+    }
+
+    if (hasMessage && hasException) {
+      StringBuilder sb =
+          new StringBuilder("Binary decoders disagreed on whether the payload was valid.\n");
+      for (int i = 0; i < BinaryDecoder.values().length; ++i) {
+        sb.append(BinaryDecoder.values()[i].name());
+        if (messages[i] != null) {
+          sb.append(" accepted the payload.\n");
+        } else {
+          sb.append(" rejected the payload.\n");
+        }
+      }
+      throw new RuntimeException(sb.toString());
+    }
+
+    if (hasException) {
+      // We do not check if exceptions are equal. Different implementations may return different
+      // exception messages. Throw an arbitrary one out instead.
+      throw exceptions[0];
+    }
+
+    // Fast path comparing all the messages with the first message, assuming equality being
+    // symmetric and transitive.
+    boolean allEqual = true;
+    for (int i = 1; i < messages.length; ++i) {
+      if (!messages[0].equals(messages[i])) {
+        allEqual = false;
+        break;
+      }
+    }
+
+    // Slow path: compare and find out all unequal pairs.
+    if (!allEqual) {
+      StringBuilder sb = new StringBuilder();
+      for (int i = 0; i < messages.length - 1; ++i) {
+        for (int j = i + 1; j < messages.length; ++j) {
+          if (!messages[i].equals(messages[j])) {
+            sb.append(BinaryDecoder.values()[i].name())
+                .append(" and ")
+                .append(BinaryDecoder.values()[j].name())
+                .append(" parsed the payload differently.\n");
+          }
+        }
+      }
+      throw new RuntimeException(sb.toString());
+    }
+
+    return messages[0];
+  }
+
 
   private Conformance.ConformanceResponse doTest(Conformance.ConformanceRequest request) {
-    TestMessagesProto3.TestAllTypes testMessage;
+    com.google.protobuf.AbstractMessage testMessage;
+    boolean isProto3 = request.getMessageType().equals("proto3");
 
     switch (request.getPayloadCase()) {
       case PROTOBUF_PAYLOAD: {
-        try {
-          testMessage = parseBinary(request.getProtobufPayload());
-        } catch (InvalidProtocolBufferException e) {
-          return Conformance.ConformanceResponse.newBuilder().setParseError(e.getMessage()).build();
+        if (isProto3) {
+          try {
+            testMessage = parseBinaryToProto3(request.getProtobufPayload());
+          } catch (InvalidProtocolBufferException e) {
+            return Conformance.ConformanceResponse.newBuilder().setParseError(e.getMessage()).build();
+          }
+        } else if (request.getMessageType().equals("proto2")) {
+          try {
+            testMessage = parseBinaryToProto2(request.getProtobufPayload());
+          } catch (InvalidProtocolBufferException e) {
+            return Conformance.ConformanceResponse.newBuilder().setParseError(e.getMessage()).build();
+          }
+        } else {
+          throw new RuntimeException("Protobuf request doesn't have specific payload type.");
         }
         break;
       }
@@ -256,8 +421,10 @@ class ConformanceJava {
       case UNSPECIFIED:
         throw new RuntimeException("Unspecified output format.");
 
-      case PROTOBUF:
-        return Conformance.ConformanceResponse.newBuilder().setProtobufPayload(testMessage.toByteString()).build();
+      case PROTOBUF: {
+        ByteString MessageString = testMessage.toByteString(); 
+        return Conformance.ConformanceResponse.newBuilder().setProtobufPayload(MessageString).build();
+      }
 
       case JSON:
         try {
-- 
2.18.0