The arms are very segmented.  For each arm there is and IK and FK a bind a wrist setup and a forearm.  Each one has their own joint chain. and setup.
			We separate them out because the wrist and foreArm don't need to change as the IK/FK change.  This saves time but it becomes a little more complex. 
		
  1. STEP 1: Create IK joints and FK joints

    					Select the left clavicle bind joint. 
    					Using the group rename, search for "_bind_" replace with "_ik_", duplicate and rename is checked, go.
    					Rename left_wrist_pos_joint in the ik chain left_wrist_ik_joint.
    					Duplicate the bind joints again, search for "_bind_" replace with "_fk_".
    					Unparent both new joint chains. 
    					Hide everything but the FK chain.
    				
    left fk arm
  2. STEP 2: Fk arm shapes

    					We are going to create the fk arms just like we did with the legs by creating shapes as the joints.
    					Create 3 circles.
    					Rotate to match the axis of the upperArm joint. Move them to the origin and freeze transforms.
    					Select one of the circles. Then select the upperArm joint. Press the shape button on the rigging shelf.
    					Delete the original circle.
    					Do the same for the lowerArm and wrist fk joints.
    					Then move the CV's of the shape and place them around where the geometry should be, like the picture below.
    				
    left fk arm
  3. STEP 3: Create Clavicle anim and do some fk touchups

    					Create a circle. Snap it to the clavicle joint.
    					Rename the circle "left_clavicle_anim".
    					Rotate the circle, so it can be easily selectable.
    					Freeze transforms.
    					Select the clavicle_anim, then the left fk clavicle joint, and create a parent constraint.
    					Select the clavicle lock and hide the translate, scale and visibility attrs.
    					Select the other fk anims. 
    					Lock and hide the translate, scale and visibilty attrs.
    					On the lowerArm joint lock and hide the rotate X and Z also, because it is a hinge joint.
    					Rename upperArm joint as left_upperArm_anim
    					Rename the lowerArm joint as left_lowerArm_anim
    					Rename the wrist joint as left_wrist_fk_anim
    				
    left clavivle placement
  4. STEP 4: Create the IK anims

    					Hide the fk arm and unhide the ik arm.
    					Import a circleArrowThree.mb for the rigging_files.
    					Snap the curve to the ik wrist joint.
    					Rotate and scale the curve to place as shown.
    					Rename the curve left_wrist_ik_anim.
    					Freeze transforms
    					Import a square anim. 
    					Rename it left_elbow_anim
    					Snap it to the left lowerArm joint.
    					Freeze transforms.
    					Move it back in the Z behind the arm.
    					Freeze transforms again.
    					The Ik arm doesn't need a clavicle joint because we can use the fk clavicle anim.
    					Unparent the left_upperArm_ik_joint, then delete the left_clavicle_ik_joint.
    				
    left clavivle placement
  5. STEP 5: Create the IK arm

    					In the animation menu set, skeleton -> Ik handle tool -> options. 
    					Make sure the RPSolver is choosen.
    					Select the upperArm joint, then the wrist joint.
    					If the white line on the handle is not point toward the characters back, undo and make sure preferred angle is set correctly.
    					Rename the ik handle, left_arm_ik.
    					Parent the ik handle under the left wrist ik anim. 
    				
  6. STEP 6: Create the elbow pointer.

    					Create a linear curve.
    					Create a cluster for each of the CV's.
    					Rename the curve, left_elbow_pointer_curve.
    					Rename the clusters, left_elbow_pointer_start, left_elbow_pointer_end.
    					Point Constrain the start cluster to the lower arm ik joint, and the end to the elbow anim, make sure maintain offset is off.
    					Group the curve and both clusters together.
    					Rename the group left_elbow_pointer_grp.
    					Select the curve and template it.
    					Hide the clusters.
    					Select the elbow anim, then the arm ik.
    					Create a poleVector constraint.
    				
    left_ik setup
  7. STEP 7: Create the hands

    					Hide the ik arm, the anims and the pointer group. 
    					Unparent the left_wrist_bind_joint.
    					I am going to create the hand anims directly on the bind joints.
    					You shouldn't directly animate a bind joints to keep things clean, but I figure this rig is big enought for a tutorial.
    					To create the hand anims, we are just going to create a shape node for each of the finger joints.
    					Create a nurbs circle, orient like the joint, move it to the origin, freeze transforms.
    					Select the cicle, then a finger joint, and use the shape node in the rigging shelf.
    					Move the Cv's of the new shape node.
    					Delete the orginal circle.
    					Rinse and repeat for all the finger joints. Don't do the end joints, or the left_wrist_bind_joint.
    					Once done with all the fingers lock the translate, scales, and visibility on the joints.
    					select all the joints that are anim. 
    					Using group rename, search for "_bind_joint" and replace with "_anim"  
    				
    left_ik setup
  8. STEP 8: create orient constraint blends

    					Group the wrist, elbow anims, and the elbow pointer grp together.
    					Rename it left_arm_ik_anim_grp.
    					Group left_arm_ik_anim_grp and left_clavicle_anim
    					Rename the group left_arm_anim_grp.
    					Group the the ik upperArm, fk clavicle, bind_clavicle and wrist joints together.
    					Rename group left_arm_skeleton_grp.
    					Select the clavicle fk joint then the clavicle bind joint, create a point and orient constraint.
    					Select the left fk upperArm joint, then the left ik upperArm_joint, then the bind upperArm joint and create a orient constraint.
    					Select the left fk lowerArm joint, then the left ik lowerArm joint, then the bind lowerArm joint and create a orient constraint.
    					Select the left fk wrist joint, then the left ik wrist joint, then the bind wrist joint and create a orient constraint.
    					Select the left_wrist_ik_anim, then the left_wrist_ik_joint, and create an orient constraint.
    					
    				
  9. STEP 9: create blend

    					Select the top con.
    					Add an attribute to the top con. Name the attr "leftArmFkIk", it should be an enum with the first "FK" and the second "IK".
    					Open up the hypergraph.
    					Connect the .leftArmFkIk to the .weight1 of the left arm bind orient constraints, not the clavicle orient constraint.
    					Create an reverse node. 
    					Rename the reverse node, "left_arm_blend_rev".
    					Connect the .leftArmFkIk to the inputX of the reverse.
    					Connect the .outputX of the reverse to the .weight0 of the orient constraints, again not the clavicle orient constraint.
    					Connect the .leftArmFkIk to the .visibility to the left_arm_ik_anim_grp.
    					Connect the .outputX of the reverse to the .visibility of the left_upperArm_anim.
    					Parent constrain the left_wrist_bind_joint to left_wrist_bind_pos.
    					Delete the geomety under the ik and fk joints.
    				
  10. STEP 10: ForeArm twist ik.

    					We are going to use another spine Ik handle for the forearm.
    					We aren't going to move the joints but rather take advantage of the advanced twist for the forearm twist.					
    					Create a linear curve from the lowerArm joint to the wrist joint.
    					Rename the curve, left_foreArm_ik_curve.
    					From the animation menu set -> skeleton -> Ik spline handle tool -> options.
    					Uncheck auto create curve.
    					Select left_foreArm_1_bind_joint, left_foreArm_5_bind_joint, left_foreArm_ik_curve.
    					Rename the ik handle left_foreArm_ik. 
    				
  11. STEP 11: ForeArm advance twist.

    					Create two locators.
    					Rename them left_foreArm_twist_start, left_foreArm_twist_end.
    					Snap the start locator to the lowerArm joint.
    					Snap the end locator to the wrist joint.
    					Freeze transforms on both locators.
    					Move them out in the +Z direction and freeze transforms again.
    					Move the pivot of the start locator to the lowerArm, and the end locator to the wrist joint. 
    					Select the ik handle.
    					In the attribute edit, ik solver attrs -> advanced twist controls, check enable advanced twist.
    					Set the world up type: object up(start/end).
    					Set the up Axis to -Y.
    					Set the world up object to left_foreArm_twist_start.
    					set the world up object 2 to left_foreArm_twist_end.
    				
    foreArm_twist foreArm twist attrs
  12. STEP 11: ForeArm finish and outliner cleanup

    					Parent the foreArm_ik_curve under the lowerArm bind joint.
    					Parent Constrain the foreArm_1 joint to the lowerArm_bind_joint.
    					Parent the ik handle under the do_not_touch_grp.
    					Parent the foreArm end locator under the wrist pos joint.
    					Hide the foreArm locators.
    					Parent the foreArm start locator under the lowerArm bind joint.
    					Parent the foreArm joints under the left_arm_skeleton_grp
    					Parent the left_arm_skeleton_grp under the skeleton_grp
    					Parent the left_arm_anim_grp under the anim_grp
    					Lock and hide scale and vis on the wrist ik anim.
    					Lock and hide everything but translate on the elbow anim.