# Java 8, 719 bytes <!-- language-all: lang-java --> u->{String a="______________";return r(" _"+a,"_")+r("|| x ","|")+r("|| x /","|")+r("|| /x'.__.' ",":")+r("|| __.' x ","|")+r("||'. /x'---'",":")+r("||x '. /' x__ _","|")+r("|| | /. /x ' ", ":")+r("|| | | './ x _","|")+r("||/ '/. /'. // ","|")+r("||__/___/___/_x","(+)")+r("|| x x x /","(O)")+r("||x .x' x.' xx_",":")+r("|| | | .'x / ","|")+r("|| | x' x/_._",":")+r("||/ .' x / ","|")+r("||.'_ 'x/.---.",":")+r("|| '. / __ ","|")+r("|| x/.' '. ",":")+r("|| / x","|")+r("||____/_________",":")+r("|/"+a,"_");}String r(String a,String b){return a.replace("x","\\")+b+(new StringBuffer(a).reverse()+"\n").replace("/","\\").replace("x","/");} Can definitely be golfed, but it's just a start and something other Java golfers can (try to) beat. ;) **Explanation:** [Try it here.](https://tio.run/##bZPBcuMgDIbveQoNF8M4hnsz3cPeNz302HQY7JKtsy72YJzSSfLsqeTFjd1dZrAN4pN@ZOlgjqZoO@sOL3@uVWP6Hn6Z2p1WALUL1u9NZWFLS4DH4Gv3Gyr@UB5sFSCKDe5fVvjYgoN7uA7Fj1M6Ze6ZXgy28TYM3oHnDDTLzZppJnJcnc/kPcI02Jqd55Yvk/rHomImtZYZMXdflnFnouZMJieqKIpszkRAmyJKa1Q3j4ORlBwpoDgwC4SmM4KKgi0gBRkxipyqhQStlZ5mRAPPxe1GEaZJV@UP4iZPRhKH94pRLy47apAZYupb6shhRt6UlgtGAfmBkVgyMtO4k0UlMUFyEQcoQ0ho/d9fpCjleOIbk2LQiWUW/uYglcaNUVNhbC6rzYgr2LYBOuMDtHsIrxbKj2CLqh1cWKVi83yqunX6KMUplZuR3nYNljFnJGG3w0hlzp19TwX9c9jvredG4MGj9b3lImc7x8QNVAlculKk8grQDWVTV9AHE/B1bOsXeMMeSpqensGI1EAffbBvsh2C7NAURhHUblxIJyvuhqYRqaku108) u->{ // Method (1) with unused Object parameter and String return-type String a="______________"; // Temp String we use multiple times return r(" _"+a,"_")+r("|| x ","|")+r("|| x /","|")+r("|| /x'.__.' ",":")+r("|| __.' x ","|")+r("||'. /x'---'",":")+r("||x '. /' x__ _","|")+r("|| | /. /x ' ", ":")+r("|| | | './ x _","|")+r("||/ '/. /'. // ","|")+r("||__/___/___/_x","(+)")+r("|| x x x /","(O)")+r("||x .x' x.' xx_",":")+r("|| | | .'x / ","|")+r("|| | x' x/_._",":")+r("||/ .' x / ","|")+r("||.'_ 'x/.---.",":")+r("|| '. / __ ","|")+r("|| x/.' '. ",":")+r("|| / x","|")+r("||____/_________",":")+r("|/"+a,"_"); // Return the result } // End of method (1) String r(String a,String b){ // Method (2) with two String parameters and String return-type return a.replace("x","\\") // Return the first halve of the row +b // + the middle character(s) +(new StringBuffer(a).reverse()+"\n").replace("/","\\").replace("x","/"); // + the reversed first halve } // End of method (2)