I'm not sure which discussion you're referring to - the link leads back to the homepage. Also those docs are from 9i - over 20 years old now!
The syntax:
insert into ... values <rec>
Is only for adding PL/SQL records. To insert an object type, list its attributes specifically. Or - as you can query an object table like a regular table - use insert select to add the rows. 
For example:
CREATE OR REPLACE PACKAGE BODY xxylp_emp_pkg 
AS 
  PROCEDURE insert_rec (p_emp_typ IN  emp_type) 
  AS 
  BEGIN 
    for rws in ( select * from table ( p_emp_typ ) ) loop
      dbms_output.put_line ( rws.empno );
    end loop;
    FORALL idx IN p_emp_typ.FIRST .. p_emp_typ.LAST 
      INSERT INTO emp ( empno, ename ) 
           VALUES ( p_emp_typ(idx).empno, p_emp_typ(idx).ename ); 
       
    dbms_output.put_line('Insert Count: '||SQL%ROWCOUNT);   
    INSERT INTO emp ( empno, ename ) 
      select empno, ename from table ( p_emp_typ ); 
    dbms_output.put_line('Insert Count: '||SQL%ROWCOUNT);   
  END insert_rec;     
END xxylp_emp_pkg; 
/
begin 
  XXYLP_EMP_PKG.INSERT_REC ( 
    emp_type ( 
      emp_obj ( 1, 'test', 'JOB', null, sysdate, 1000, 0, 10 ),
      emp_obj ( 2, 'test', 'JOB', null, sysdate, 2000, 0, 10 )
    )
  );
end;
/
1
2
Insert Count: 2
Insert Count: 2
select empno, ename from emp;
     EMPNO ENAME               
---------- --------------------
         1 test                
         2 test                
         1 test                
         2 test